SysTick要参照Programming manual手册,寄存器一共有4个,如图:
分别为STK_CTRL
STK_LOAD
STK_VAL
STK_CALIB校验,此基本用不到,或者水平没到那个程度,暂时用不到
Delay_us
void Delay_us(unsigned int nTime)
{
SysTick->LOAD = 72*nTime;
SysTick->CTRL =SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk;
while(!(SysTick->CTRL&SysTick_CTRL_COUNTFLAG_Msk));
SysTick->CTRL =~SysTick_CTRL_ENABLE_Msk;
}
直到为bit 16为1的时候完成us的延时,因为systick只是一个24bit的计数器,所以总有个最大延时,所以采用delay ms去实现更多的延时
void Delay_ms(unsigned int nTime)
{
for(;nTime > 0;nTime--)
Delay_us(1000);
}
以上可以实现延时,测试有效