您的位置:首页 > 其它

【stm32f103】SysTick实现延时(寄存器版)

2017-08-21 18:27 155 查看

一.SysTick寄存器介绍

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);
}
以上可以实现延时,测试有效
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: