zhonggx 发表于 2014-9-27 17:04
请你看另一个贴子吧,很多人要实现软件延时,51那种通过循环方法因为ARM的周期不确定的原因,无法实现比 ...
给你机个建议吧:
1:你的delayus函数无论无何都是死等,因为是for(;;)的结构,条件不成立不会return,除非你在for循环里调用其它函数
2:你只是用了系统中的一个计数变量+ifelse来判断计时时间,结构上并没有大的区别.
3.指令延时不是不可以用,us级的没有必要,用指令延时不准的根本原因是延时代码被系统的各种中断打乱引起的,严格的延时是要关闭全部中断的,固定长的代码执行时间肯定是固定的.
4.到点儿做事不用特别的函数,依据条件进入做事儿的函数就行了,这个条件可以是系统的任何一个与时间相关的变量,但是需要结合需求安排全局量这个比较复杂.
5.不死延时就一定要用一个定时器的理解有偏差,如果定时器自由计数从0~65535,cnt的任何一位都是和时间相关的逻辑,取这个逻辑做判断即可.
|