中级会员
 
- 积分
- 437
- 金钱
- 437
- 注册时间
- 2017-2-13
- 在线时间
- 110 小时
|
3金钱
程序莫名的会死在延时函数的死循环中,之前使用的延时函数并没有出现这种情况,想请教大家一下死在延时函数的do {}while;循环会是什么原因,网上只是说延时函数的实现方法但是并没有这方面经验可以借鉴,希望有这方面积累的能给予解答一下
[mw_shl_code=c,true]void delay_xms(u16 nms)
{
u32 temp;
SysTick->LOAD=(u32)nms*fac_ms;//ʱ¼ä¼ÓÔØ(SysTick->LOADΪ24bit)
SysTick->VAL =0x00; //Çå¿Õ¼ÆÊýÆ÷
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //¿ªÊ¼µ¹Êý
do
{
temp=SysTick->CTRL;
}
while((temp&0x01)&&!(temp&(1<<16)));//µÈ´ýʱ¼äµ½´ï
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //¹Ø±Õ¼ÆÊýÆ÷
SysTick->VAL =0X00; //Çå¿Õ¼ÆÊýÆ÷
} [/mw_shl_code]
|
|