void delay_ms(u16 nms)
{
u32 temp;
SysTick->CTRL&=0xfffffffb;//bit2Çå¿Õ,Ñ¡ÔñÍⲿʱÖÓ HCLK/8
SysTick->LOAD=(u32)nms*fac_ms;//ʱ¼ä¼ÓÔØ(SysTick->LOADΪ24bit)
SysTick->VAL =0x00; //Çå¿Õ¼ÆÊýÆ÷
SysTick->CTRL=0x01 ; //¿ªÊ¼µ¹Êý
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//µÈ´ýʱ¼äµ½´ï
SysTick->CTRL=0x00; //¹Ø±Õ¼ÆÊýÆ÷
SysTick->VAL =0X00; //Çå¿Õ¼ÆÊýÆ÷
}
这个程序一直停留在DO WHILE 处,跳不出来,temp&(1<<16)好像一直没有变化,定时器第16位没有被置一,是什么的原因 |