[应用相关] STM32学习笔记之Systick

[复制链接]
 楼主| peripheral 发表于 2020-2-7 15:55 | 显示全部楼层 |阅读模式
Systick实验中,Systick用来定时。来看看程序中什么地方出现过Systick相关的语句。
main.c:
  1. /* SysTick end of count event each 1ms with input clock equal to 9MHz (HCLK/8, default) */
  2.   SysTick_SetReload(9000);

  3.   /* Enable SysTick interrupt */
  4.   SysTick_ITConfig(ENABLE);

  5.   /*******************************************************************************
  6. * Function Name  : Delay
  7. * Description    : Inserts a delay time.
  8. * Input          : nTime: specifies the delay time length, in milliseconds.
  9. * Output         : None
  10. * Return         : None
  11. *******************************************************************************/
  12. void Delay(u32 nTime)
  13. {
  14.   /* Enable the SysTick Counter */
  15.   SysTick_CounterCmd(SysTick_Counter_Enable);
  16.   TimingDelay = nTime;

  17.   while(TimingDelay != 0);

  18.   /* Disable SysTick Counter */
  19.   SysTick_CounterCmd(SysTick_Counter_Disable);
  20.   /* Clear SysTick Counter */
  21.   SysTick_CounterCmd(SysTick_Counter_Clear);
  22. }

  23. /*******************************************************************************
  24. * Function Name  : TimingDelay_Decrement
  25. * Description    : Decrements the TimingDelay variable.
  26. * Input          : None
  27. * Output         : TimingDelay
  28. * Return         : None
  29. *******************************************************************************/
  30. void TimingDelay_Decrement(void)
  31. {
  32.   if (TimingDelay != 0x00)
  33.   {
  34.     TimingDelay--;
  35.   }
  36. }

  37. stm32f10x_it.c:
  38. void SysTickHandler(void)
  39. {
  40. TimingDelay_Decrement();
  41. }


 楼主| peripheral 发表于 2020-2-7 15:55 | 显示全部楼层
Systick的应用:
初始化时:
首先我们要确定Systick的时钟源,再确定重装载值,如果用中断方式,
这里可以打开Systick中断始能。

定时运行时:
使能Systick时钟,判断systick定时到0,到0以后,失能Systick时钟,再清0重载寄存器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

438

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部