发新帖我要提问
12
返回列表
打印

如何在16Mmsp430下较准地用for语句写1ms和1us延时

[复制链接]
楼主: liliang9554
手机看帖
扫描二维码
随时随地手机跟帖
21
hellosdc| | 2019-3-12 20:27 | 只看该作者 回帖奖励 |倒序浏览
__delay_cycles(x),x必须是常量或则是常量表达式

使用特权

评论回复
22
uiint| | 2019-3-12 20:27 | 只看该作者
//频率为1MHz就是说,1秒的时间内震动1000 000次
//也就是说要想得到1秒的延时,必须震动100 000次
//要想得到1ms的延时震动1000次
//要想得到1us的延时震动1次
//在MSP430中计一个数,需要时钟震动一次,上面的延时函数就是这样实现的

使用特权

评论回复
23
gygp| | 2019-3-12 20:28 | 只看该作者
__intrinsic void __delay_cycles(unsigned long __cycles);

使用特权

评论回复
24
isseed| | 2019-3-12 20:28 | 只看该作者
IAR编译时会替换成相应的循环代码.  

使用特权

评论回复
25
chenci2013| | 2019-3-12 20:28 | 只看该作者
#define delay_ms(ms)    __delay_cycles(CPU_CLOCK/1000*(ms))

使用特权

评论回复
26
wangdezhi| | 2019-3-12 20:28 | 只看该作者
以上程序段在要求延时精度不高的场合可以用。

使用特权

评论回复
27
biechedan| | 2019-3-12 20:28 | 只看该作者
使用范例

delay_us(1); //1 微秒的延时

delay_ms(1); //1 毫秒的延时

delay_us(3.5); //延时3.5微秒

delay_ms(3.5); //延时3.5毫秒

delay_ms(1000); //延时1秒

使用特权

评论回复
28
hellosdc| | 2019-3-12 20:28 | 只看该作者
利用它内部的延时子程序来实现我们想要的高精度软件延时

使用特权

评论回复
29
mituzu| | 2019-3-12 20:28 | 只看该作者
在IAR 软件430的编译器里面我们可以利用它内部的延时子程序来实现

使用特权

评论回复
30
suzhanhua| | 2019-3-12 20:28 | 只看该作者
delay_ms(1)延时基本是1ms   

使用特权

评论回复
31
xietingfeng| | 2019-3-12 20:28 | 只看该作者
可以像调用函数一样调用,直接和以前一样在需要延时的地方delay_ms(100);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则