430单片机精确延时

[复制链接]
 楼主| yszong 发表于 2019-4-17 19:49 | 显示全部楼层 |阅读模式
我在430单片机的intrinsics.h头文件里找到这个__intrinsic void __delay_cycles(unsigned long __cycles);精确延时函数,里面的cycles应该填写系统机器周期。
问题如下:我想请教#define Delay_ms(x) __delay_cycles((unsigned long)((unsigned int)x*1000000)/1000);与#define Delay_ms(x) __delay_cycles((unsigned long)((unsigned int)x*1000));有什么区别吗?
dengdc 发表于 2019-4-17 19:52 | 显示全部楼层

楼主详细说说怎么回事啊,这么说太笼统了
 楼主| yszong 发表于 2019-4-17 19:58 | 显示全部楼层
我用前一句延时可以做出Delay_ms(500)这样的500ms延时,但是用后一句的话,延时时间连几十ms(估计值,未测)都不到,非常快就过去了。是哪里出了问题呢?
shimx 发表于 2019-4-17 20:01 | 显示全部楼层
然后呢?你是怎么应对这个的呢
 楼主| yszong 发表于 2019-4-17 20:04 | 显示全部楼层
ps:晶振8M,8分频,主系统和子系统时钟都1M。
午夜粪车 发表于 2019-4-17 20:08 | 显示全部楼层
这个跟单片机的主频是相关的
huangchui 发表于 2019-4-17 20:12 | 显示全部楼层

MSP430:
unsigned int(16 bit) --> unsigned long(32 bit)
 楼主| yszong 发表于 2019-4-17 20:15 | 显示全部楼层

unsigned int(16 bit) --> unsigned long(32 bit),请问应该改什么地方呢?
wyjie 发表于 2019-4-17 20:19 | 显示全部楼层

第二种写法把unsigned int 改成 unsigned long
huangchui 发表于 2019-4-17 20:21 | 显示全部楼层
没有就是你的时钟设置的问题吧。
jiaxw 发表于 2019-4-17 20:25 | 显示全部楼层
精确延时能够精确几个时钟?
jiaxw 发表于 2019-4-18 15:41 | 显示全部楼层
这个在不同的处理器定义的吗?
dengdc 发表于 2019-4-18 15:45 | 显示全部楼层
看着计算的结果没有什么区别
zhenykun 发表于 2019-4-18 15:48 | 显示全部楼层
这个延时的是直接的跟系统的主时钟频率相关系的
jiaxw 发表于 2019-4-18 15:52 | 显示全部楼层
会不会是时钟设置的问题
heweibig 发表于 2019-4-18 15:58 | 显示全部楼层
这个实现的就是精确延时
heweibig 发表于 2019-4-18 16:01 | 显示全部楼层
跟时钟信号源有关系。
jiaxw 发表于 2019-4-18 16:04 | 显示全部楼层
这和单片机的主频是有关的吧
spark周 发表于 2019-4-18 16:10 | 显示全部楼层

__intrinsic这个定义是什么
liliang9554 发表于 2019-4-18 16:14 | 显示全部楼层
__intrinsic 这个的变量是什么意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

830

主题

11379

帖子

4

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