【stm32f103】SysTick实现延时(寄存器版)
2017-08-21 18:27
155 查看
一.SysTick寄存器介绍
SysTick要参照Programmingmanual手册,寄存器一共有4个,如图:
分别为STK_CTRL
STK_LOAD
STK_VAL
STK_CALIB校验,此基本用不到,或者水平没到那个程度,暂时用不到
二.程序分析
Delay_usvoid 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);
}
以上可以实现延时,测试有效
相关文章推荐
- 【stm32f407】SysTick实现延时
- stm32 SysTick定时器常见问题和实现延时
- stm32f4使用Systick实现延时
- 【stm32f103】USART TX发送实现(寄存器版)
- 利用stm32f103的TIM2实现精确延时
- STM32使用systick实现精确延时
- K60--滴答定时器(SysTick)实现精准延时
- 【stm32f103】USART RX实现(寄存器版)
- STM32 SysTick定时器常见问题及延时函数的实现
- LPC1768实现精准延时——Systick的使用
- LPC1768实现精准延时——Systick的使用
- 关联加载IRelationLoad的实现代码(即时和延时)
- Unity延时功能的几种实现
- 利用Keil u4调试,精确实现软件延时
- Redis实现可靠低延时的消息队列
- 浅析FreeRTOS_v4.5.0延时机制---vTaskDelay()的实现
- STM32中,systick具体延时时间计算
- Android使用Fragment的setUserVisibleHint方法实现延时加载
- STM32外设驱动---SysTick精准延时
- Anddroid使用Fragment的setUserVisibleHint方法实现延时加载