MSP430 实现精准延时

对于大多数单片机我们在进行操作时都需要一定的延时
对于51系列常使用_NOP_( );指令进行1us延时或者更简单粗暴一些直接使用for循环for(i=0;i<1000;i++)做一MS的延时
大多数的单片机执行+1运算时间为1US,但是这种延时并不准确
下面实现精准延时
IAR 软件430的编译器里面我们可以利用它内部的延时子程序来实现我们想要的高精度软件延时,方法如下:

(1):将以下这段代码复制到你的.C源文件中。

#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))

(2):修改

在 #define CPU_F ((double)8000000) 语句里 8000000 修改成你当前MSP430 CPU的主频频率,即CPU的MCLK。

单位为HZ。本例中的8000000为MCLK=8MHZ 的意思。

(3):使用范例

delay_us(1); //1 微秒的延时

delay_ms(1); //1 毫秒的延时

delay_us(3.5); //延时3.5微秒

delay_ms(3.5); //延时3.5毫秒

delay_ms(1000); //延时1秒

直接调用,如:__delay_cycles(100),就延时100个时钟周期.

用户指导手册
芯片管脚手册
推荐教学视频
https://www.bilibili.com/video/BV1cE411Z79d?from=search&seid=15656799615629348503
https://www.bilibili.com/video/BV1rE41167yG?from=search&seid=6968580456886645765

MSP430 C语言例程
链接:https://pan.baidu.com/s/1z-q4JGVUzTmJrgeurAExYw
提取码:t2qa
链接:https://pan.baidu.com/s/12bALa0_v6j4bAIcULMtzJQ
提取码:0xv9

TI官网提供例程
链接:https://pan.baidu.com/s/1GBXAUFL5opM9LbreQ7zsNw
提取码:1gn6

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值