我是一个新手,之前只会用for或者while在程序中进行逐减延时,但现在需要一个五分钟左右的这个方法就不行了,所以大神们,求助啊!!!
可以用定时器配合适当数量的变量实现。假设定时器的溢出周期为10ms,两个变量分别为m和n,先将二者清零。当定时器溢出时,对m做累加1操作,当m累加到255时对n做累积1操作,那么每个n数值对应的延时时间就是255*10ms。延时时间较短,用一个变量即可,需要很长时间的延时,就用多个变量。此法可以实现任意时长的延时。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
除非系统内已具备RTC,否则为此增加RTC就实在太过分了。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
版主所言甚是
单机设备考虑成本功耗等因素,使用外置RTC确实比较过分,多是选择使用MCU片上的RTC
不过感觉也会有一些比较特殊的情况
譬如对时钟同步要求比较严格的场合(SDH传输设备之类),或者工作环境比较恶劣时(片上RTC配套晶振和电容对时钟的产生影响会比较大)
这个时候,也许应该考虑使用一些DPLL的时钟芯片吧
个人愚见
想到这些,就随手敲了几句,提醒RTC的存在
本帖最后由 ljj3166 于 2014-11-27 22:27 编辑
具有片内RTC资源的MCU在整个MCU型号体系中所占比例极低,所以不能指望,而定时器资源多数MCU都有。如果没有定时器,可以用纯软件实现定时。
对于要求很高的时钟,你说的不错,这时要使用PLL技术,甚至晶振电路本身都要特别讲究,比如采用恒温晶振等。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
显然楼主不是要精确定时,只是个5分钟左右延时。这个当然用定时器做,像2楼说的,设一个10mS的中断来计数。不过既然用32位机,当然用一个长整形变量,范围足够你用了
可以考虑采用RTC或者定时器来实现。
TM4C129含有RTC外设,可以直接使用。另外采用定时器中断也可以的。
我也是这个问题我也是这个问题我也是这个问题我也是这个问题我也是这个问题我也是这个问题
RTC在休眠模式下消耗的资源是很少的,但是需要实时性很强的控制的话还是考虑定时器和中断吧