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

[复制链接]
1793|30
hellosdc 发表于 2019-3-12 20:27 | 显示全部楼层
__delay_cycles(x),x必须是常量或则是常量表达式
uiint 发表于 2019-3-12 20:27 | 显示全部楼层
//频率为1MHz就是说,1秒的时间内震动1000 000次
//也就是说要想得到1秒的延时,必须震动100 000次
//要想得到1ms的延时震动1000次
//要想得到1us的延时震动1次
//在MSP430中计一个数,需要时钟震动一次,上面的延时函数就是这样实现的
gygp 发表于 2019-3-12 20:28 | 显示全部楼层
__intrinsic void __delay_cycles(unsigned long __cycles);
isseed 发表于 2019-3-12 20:28 | 显示全部楼层
IAR编译时会替换成相应的循环代码.  
chenci2013 发表于 2019-3-12 20:28 | 显示全部楼层
#define delay_ms(ms)    __delay_cycles(CPU_CLOCK/1000*(ms))
wangdezhi 发表于 2019-3-12 20:28 | 显示全部楼层
以上程序段在要求延时精度不高的场合可以用。
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秒
hellosdc 发表于 2019-3-12 20:28 | 显示全部楼层
利用它内部的延时子程序来实现我们想要的高精度软件延时
mituzu 发表于 2019-3-12 20:28 | 显示全部楼层
在IAR 软件430的编译器里面我们可以利用它内部的延时子程序来实现
suzhanhua 发表于 2019-3-12 20:28 | 显示全部楼层
delay_ms(1)延时基本是1ms   
xietingfeng 发表于 2019-3-12 20:28 | 显示全部楼层
可以像调用函数一样调用,直接和以前一样在需要延时的地方delay_ms(100);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部