很多刚学习AVR的同学对于延时函数的使用可能不是很清楚,AVR的延时和外接晶振密切相关,而外接晶振需要设置熔丝位,关于熔丝位的设置请见我上传的另一篇文章《SLISP的使用以及熔丝位设置》,在不了解熔丝位的情况下切勿自行设置熔丝位,否则后悔莫及。不同频率下有不同的最大取值,我测试过8M晶振的AVR,超过32的数值一律按照32计算。其他的没测试,具体不详,应该是这么回事。 GCC中delay_ms,delay_us延时函数在不同工作频(常用)下的最大值如下:
_delay_ms(double __ms)
The maximal possible delay is 262.14 ms / F_CPU in MHz. 工作频率 最大延时值(ms) 20M 13ms 16M 16ms 12M 21ms 11.0592M 23ms 8M 32ms 7.3728M 35ms 4M 65ms 2M 131ms 1M 262ms _delay_us(double __us)
The maximal possible delay is 768 us / F_CPU in MHz.
工作频率 最大延时值(us) 20M 38us 16M 48us 12M 64us 11.0592M 69us 8M 96us 7.3728M 4M 192us 2M 384us 1M 768us
104us
相关推荐: