MSP430单片机的软硬件C延时程序设计
单片机程序员。笔者在实际项目开发过程中,遇到很多需要严格时序控制的接口器件,
如单总线数字温度传感器DSl8820、实时时钟芯片PCF8563(需要用普通]/o模拟12C
笔者提出了适合于不同延时级别需要的软件或硬件精确延时方法,并已实际应用,效果良好
MSP430单片机系统程序多采用事件驱动机制,即在没有外部事件触发的情况下CPU
休眠于低功耗模式中。当外部事件到来时,产生中断激活CPU,进入相应的中断服务程序(
ISR)中。中断响应程序只完成两个任务,一是置位相应事件的标志,二是使MCU
即在主程序中设一个无限循环,系统初始化以后直接进入低功耗模式。MCU被唤醒后,
判断各标志是否置位。如果是单一标志置位,那么MCU执行相应的事件处理程序,
主程序按照事先排好的消息队列对它们依次判别并进行处理,所有事件处理完毕以后MCU
休眠,系统进入低功耗状态(该消息队列的顺序是按照任务的重要性设定的优先级)
。在这种前后台系统中,由于主程序是无限循环,就必须关闭看门狗,与其闲置,
也弥补了使用无限循环延时的时间难确定和占用CPU时间长的缺点。通过下例,讲解在同一
产生一次中断请求。可以根据需要改变时钟节拍,在使用32768 Hz晶振作为时钟源时,
说明所需的延时未到,执行空操作,直到延时时间到,在WDTISR中将Delay500ms复位,跳出
延时程序分支。每中断一次,计数器nS加l,直到计到30,说明30 s延时完成,清零计数器,
中可以根据延时基数和计数器的搭配实现任意长度的时间延时。在系统程序设计时,
中添加相应的延时分支即可。嵌入式实时操作系统C/OS-II移植于MSP430
介绍另一种使用看门狗定时器中断完成延时的方法。若要延时1 s,则设定WDT每250 ms
中断一次。在需要延时处,启动看门狗定时器并允许其中断,系统进入低功耗模式3(共有5
种.模式)休眠。在中断服务程序中对延时时间累加,当达到1 s时唤醒CPU,
这种方法充分发挥了MSP430系列的超低功耗特性,在等待延时的过程中,CPU
只有极短的时间会在中断服务程序中累计时间并进行判断。可以根据需要设置CPU
使用C430写好一段可执行代码,在其中加入延时函数,并在主函数中调用,以delay(1OO)
窗口,前者显示编程软件根据C语言程序编译生成的汇编程序,在后者窗口中打开CPU
条指令各占用1个指令周期,循环体while()每执行一次需要5个指令周期,
加上函数调用和函数返回各占用3个指令周期,delay(100)延时了5×100+6-506
MSP430的指令执行速度即指令所用的周期数,这里的时钟周期指主系统时钟MCLK
的周期。单片机上电后,如果不对时钟系统进行设置,默认800 kHz的DCOCLK为MCLK和SMCLK
并不是说MSP430单片机软件延时最小的延时基准是ls,当开启XT2=8 MHz高频振荡器,
指令周期可以达到125 ns。MSP430F4XX系列的单片机由于采用了增强型锁频环技术FLL+,
或其任意个组合来实现。可使用宏定义实现需要的延时,如要延时3 s,则: #define
片内看门狗定时器的硬件延时方案和软件延时方法满足了不同时宽级别的延时需求,抽脂减肥价格一览表,中央編譯局政黨研究中心成立,