打印

430单片机精确延时

[复制链接]
1044|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yszong|  楼主 | 2017-1-6 19:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在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| | 2017-1-6 19:31 | 只看该作者
楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
板凳
yszong|  楼主 | 2017-1-6 19:32 | 只看该作者
我用前一句延时可以做出Delay_ms(500)这样的500ms延时,但是用后一句的话,延时时间连几十ms(估计值,未测)都不到,非常快就过去了。是哪里出了问题呢?

使用特权

评论回复
地板
shimx| | 2017-1-6 19:34 | 只看该作者
然后呢?你是怎么应对这个的呢

使用特权

评论回复
5
yszong|  楼主 | 2017-1-6 19:36 | 只看该作者
ps:晶振8M,8分频,主系统和子系统时钟都1M。

使用特权

评论回复
6
午夜粪车| | 2017-1-6 19:39 | 只看该作者
这个跟单片机的主频是相关的

使用特权

评论回复
7
huangchui| | 2017-1-6 20:11 | 只看该作者
MSP430:
unsigned int(16 bit) --> unsigned long(32 bit)

使用特权

评论回复
8
yszong|  楼主 | 2017-1-6 20:15 | 只看该作者
unsigned int(16 bit) --> unsigned long(32 bit),请问应该改什么地方呢?

使用特权

评论回复
9
wyjie| | 2017-1-6 20:17 | 只看该作者
第二种写法把unsigned int 改成 unsigned long

使用特权

评论回复
10
yszong|  楼主 | 2017-1-6 20:20 | 只看该作者
结贴了,多谢大家讨论这么多哈,呵呵

使用特权

评论回复
11
maqianqu| | 2017-1-9 21:52 | 只看该作者
没有就是你的时钟设置的问题吧。

使用特权

评论回复
12
maqianqu| | 2017-1-9 21:55 | 只看该作者
精确延时能够精确几个时钟?

使用特权

评论回复
13
232321122| | 2017-1-10 22:21 | 只看该作者
这个在不同的处理器定义的吗?

使用特权

评论回复
14
232321122| | 2017-1-10 22:25 | 只看该作者
看着计算的结果没有什么区别

使用特权

评论回复
15
smilingangel| | 2017-1-15 22:36 | 只看该作者
这个延时的是直接的跟系统的主时钟频率相关系的

使用特权

评论回复
16
Ryze| | 2017-1-22 16:40 | 只看该作者
会不会是时钟设置的问题

使用特权

评论回复
17
plsbackup| | 2017-1-22 22:05 | 只看该作者
Ryze 发表于 2017-1-22 16:40
会不会是时钟设置的问题

这个实现的就是精确延时

使用特权

评论回复
18
plsbackup| | 2017-1-22 22:08 | 只看该作者
232321122 发表于 2017-1-10 22:25
看着计算的结果没有什么区别

跟时钟信号源有关系。

使用特权

评论回复
19
可可球| | 2017-1-26 12:14 | 只看该作者
这和单片机的主频是有关的吧

使用特权

评论回复
20
updownq| | 2017-1-26 16:34 | 只看该作者
__intrinsic这个定义是什么

使用特权

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

本版积分规则

830

主题

11379

帖子

4

粉丝