初级会员
- 积分
- 137
- 金钱
- 137
- 注册时间
- 2014-8-11
- 在线时间
- 3 小时
|
发表于 2017-7-17 11:39:16
|
显示全部楼层
本帖最后由 xinshou 于 2017-7-17 17:25 编辑
为了满足misra规范,我将代码改成了:
[mw_shl_code=c,true]void delay_ms(u16 nms)
{
u8 t;
if( nms > 65U )
{
t = (u8)(nms/65U); /* if nms=16640, then t=256, U8 max=255 */
t--;
while( t > 0U)
{
delay_us(65000); /* U16 max= 65535 */
t--;
}
nms = nms%65U;
}
delay_us(nms*1000U);
}[/mw_shl_code]
不知道执行的延时的准确性 如何?
此外, 函数void delay_us(u16 nus) 的注释:
/* 延时nus
延时时间=(fac_us*4+4)*nus*(T)
其中,T为CPU运行频率(Mhz)的倒数,单位为us.
......
这里的 “单位为us” 是指函数的参数的单位是微秒还是CPU的运行频率的倒数?
承蒙各位大神指教!
|
|