程序莫名的会死在延时函数的死循环中,之前使用的延时函数并没有出现这种情况,想请教大家一下死在延时函数的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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
换了一块板子就可以,不过具体原因还是没找到,
这个问题解决了吗?我也遇到了这个问题
一周热门 更多>