void systick_delay_ms(uint16_t xms)
{
uint32_t temp;
SysTick->LOAD=xms * ms_num; //?±??????
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; //?????????÷
}
这个延时函数如果改成下面的就是掩饰双倍的时间了
void systick_delay_ms(uint16_t xms)
{
SysTick->LOAD=xms * ms_num; //?±??????
SysTick->VAL=0x00; //?????????÷
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //????????
do
{
}
while(( SysTick->CTRL )&0x01 && !((SysTick->CTRL )&(1<<16)));//?????±??????
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //??±??????÷
SysTick->VAL =0X00; //?????????÷
}
我就是把temp去掉了,为什么会这样
|