TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP432P401R delay 問題

我想要配置一個delay時間函式,我根據以下範例進行配置,但我不知道for迴圈的延遲時間是幾秒,假設我有三種延遲時間 10s、10ms、10us ,如何正確使用for迴圈函式,使他們蒙垢正確的延遲,或是有沒有其他函式可以進行延遲,而這些函式又該如何使用?

Susan Yang:

若是您想要比较精确的延迟的话,还是需要使用timer的

Susan Yang:

或者您可以使用下面的方式

/* DriverLib Includes */
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>/* Standard Includes */
#include <stdint.h>
#include <stdbool.h>int main(void)
{/* Stop Watchdog*/MAP_WDT_A_holdTimer();int mclk;while(1){__delay_cycles(1000);mclk = CS_getMCLK();}
}

user5121970:

回复 Susan Yang:

可以解釋while迴圈裡面發生了什麼事情嗎?不太懂意思

Susan Yang:

回复 user5121970:

__delay_cycles并不是真正的函数, 只是提供编译器内联展开,该函数并不支持变量参数, 其参数只能是常数.函数原型
__intrinsic void __delay_cycles(unsigned long __cycles);
该内部函数实现__cycles个CPU周期的延时

灰小子:

回复 user5121970:

while里是延时1000个时钟周期,然后获取MCLK数据。
在msp430中函数CS_getMCLK在使用内部或外部电阻或者旁路时钟频率下使用DCO才是精确有效的,不清楚在msp432上有没有工作条件的要求。

gaoyang9992006:

如果用for跑空指令延时的话,可以根据选择的时钟配置来估算每一次循环所消耗的时间,只能是个大概,不会很准。但是如果要求不高,是够用的。这延时期间就没法做其他事情了。。

赞(0)
未经允许不得转载:TI中文支持网 » MSP432P401R delay 問題
分享到: 更多 (0)