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

[复制链接]
1793|30
 楼主| liliang9554 发表于 2019-2-20 11:01 | 显示全部楼层 |阅读模式
如何在16Mmsp430下较准地用for语句写1ms和1us延时
 楼主| liliang9554 发表于 2019-2-20 11:04 | 显示全部楼层


/***************
nus延时
****************/
void delay_nus(unsigned int t)
{
for(;t>0;t--)
{
_NOP();_NOP();
_NOP();_NOP();
_NOP();_NOP();
_NOP();_NOP();
_NOP();_NOP();
_NOP();_NOP();
_NOP();_NOP();
_NOP();_NOP();
}
}
heweibig 发表于 2019-2-20 11:07 | 显示全部楼层
什么问题
 楼主| liliang9554 发表于 2019-2-20 11:11 | 显示全部楼层
nms的延时怎么写都写不对
wuhany 发表于 2019-2-20 11:15 | 显示全部楼层

听说过ms和ns,不知道nms是什么意思
jiahy 发表于 2019-2-20 11:19 | 显示全部楼层

准确的延时还是要看你选择的晶振的吧?
jiajs 发表于 2019-2-20 11:22 | 显示全部楼层
for循环都是根据时钟信号来的。
zhenykun 发表于 2019-2-20 11:26 | 显示全部楼层
现在的可以通过定时器进行延时。
zhaoxqi 发表于 2019-2-20 11:33 | 显示全部楼层
最好能够使用定时器实现精确延时。
heweibig 发表于 2019-2-20 11:37 | 显示全部楼层
使用for循环的延时都是很精确。
 楼主| liliang9554 发表于 2019-2-20 11:43 | 显示全部楼层
找到答案了,多谢大家了啊
gygp 发表于 2019-3-12 20:15 | 显示全部楼层
IAR for MSP430编译器提供了一个编译器内联的精确延时函数
chenci2013 发表于 2019-3-12 20:16 | 显示全部楼层
#define delay_us(us)    __delay_cycles(CPU_CLOCK/1000000*(us))
wangdezhi 发表于 2019-3-12 20:16 | 显示全部楼层
常见的形式有:
void delay(unsigned int ms)
{
unsigned int i,j;

for( i=0;i
for(j=0;j<1141;j++); //8MHz晶振时
}
biechedan 发表于 2019-3-12 20:17 | 显示全部楼层
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
isseed 发表于 2019-3-12 20:17 | 显示全部楼层
__delay_cycles()是编译系统"涵数"  
uiint 发表于 2019-3-12 20:17 | 显示全部楼层
#include"msp430g2553.h"


#define CPU_F ((double)1000000)
//主时钟的频率1MHz
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
//__delay_cycles()延时函数为系统自带库函数
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
//频率是物体1秒钟时间内震动的次数
xietingfeng 发表于 2019-3-12 20:18 | 显示全部楼层
delay_us(x)和delay_ms(x)是两个带参数的宏定义
suzhanhua 发表于 2019-3-12 20:18 | 显示全部楼层
用示波器测了一下            
mituzu 发表于 2019-3-12 20:27 | 显示全部楼层
请问一下你的开发环境是ccs吗 还是iar
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

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