打印

关于430单片机精确延时的一点问题。

[复制链接]
992|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
0905010627|  楼主 | 2014-6-22 16:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在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));有什么区别吗?
我用前一句延时可以做出Delay_ms(500)这样的500ms延时,但是用后一句的话,延时时间连几十ms(估计值,未测)都不到,非常快就过去了。是哪里出了问题呢?
ps:晶振8M,8分频,主系统和子系统时钟都1M。


相关帖子

沙发
firstblood| | 2014-6-22 18:15 | 只看该作者
这个跟单片机的主频是相关的

使用特权

评论回复
板凳
hwk612167| | 2014-6-22 19:03 | 只看该作者
MSP430:
unsigned int(16 bit) --> unsigned long(32 bit)

使用特权

评论回复
地板
dirtwillfly| | 2014-6-22 21:17 | 只看该作者
hwk612167 发表于 2014-6-22 19:03
MSP430:
unsigned int(16 bit) --> unsigned long(32 bit)


赞一个

使用特权

评论回复
5
0905010627|  楼主 | 2014-6-22 21:58 | 只看该作者
hwk612167 发表于 2014-6-22 19:03
MSP430:
unsigned int(16 bit) --> unsigned long(32 bit)

unsigned int(16 bit) --> unsigned long(32 bit),请问应该改什么地方呢?

使用特权

评论回复
6
ar_m_cu| | 2014-6-22 22:17 | 只看该作者
0905010627 发表于 2014-6-22 21:58
unsigned int(16 bit) --> unsigned long(32 bit),请问应该改什么地方呢?

第二种写法把unsigned int 改成 unsigned long

使用特权

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

本版积分规则

1

主题

4

帖子

0

粉丝