本帖最后由 sszl 于 2017-8-19 22:03 编辑
void delay_ms(uint16_t ms)
{
uint16_t temp;
uint16_t cnt = 0;
uint8_t number=0;
cnt = ms;
if(ms > 100)
{
number = ms/100;
cnt = 100;
}
do
{
temp = SysTick->LOAD = cnt * (SystemCoreClock /1000);
SysTick->VAL = 0x00;
SysTick->CTRL &= ~(SysTick_CTRL_CLKSOURCE|SysTick_CTRL_TICKINT);
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;//¿aÆô¶¨ê±Æ÷
do
{
temp = SysTick->CTRL; //程序一直卡在这
}while((temp&0x01)&&!(temp&(1<<16)));
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->VAL = 0x00;
ms-=100;
if(ms<=100)
{
cnt = ms;
}
}while(number--);
}
我调试过 SysTick->VAL的值在 更新 是正常的 就是 那个 标志(SysTick->CTRL(16)) 一直检测不到
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>