STM32CubeMX配置SystemTick时钟

阅读: 评论:0

STM32CubeMX自动生成SYSTICK配置
1.SYSTICK原理及其寄存器
   1.1  SYSTICK原理
SysTick 是一个24位的倒计数定时器,当计到0时,将从RELOAD寄存器中自动重装载定时初值并继续计数,且同时触发中断。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。
SysTick 的最大使命,就是定期地产生异常请求,作为系统的时基,产生一个周期性的中断。
 
   1.2SYSTICK寄存器
框计算  CTRL: Systick控制和状态寄存器 
  LOAD: Systick重装载寄存器 
  VAL: Systick当前值寄存器 
  CALIB: Systick校准值寄存器  医用手腕带
衣物加香
  CLKCOURCE-时钟源  0:外部时钟源HCLK(AHB总线时钟)/8 72M/8 = 9M  1:内核时钟(HCLK) 72M 
     CURRENT: 每经过一个Systick时钟周期,寄存器值-1 。
 
2.STM32CubeMX配置与代码生成
如下图STM32CubeMX配置所示,图中To Cortex System timer(MHz)就是Systick的时钟频率。
 自动代码生成如下:
    /**Configure the Systick interrupt time */
触指  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/8000);   //  = /8/1000 :1000 is 1ms ;1000000 is 1us
    /**Configure the Systick */
  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);
  /* SysTick_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
 
3.相关重要的函数
  3.1中断处理函数
void SysTick_Handler(void)ic编带
stewart平台
{
  /* USER CODE BEGIN SysTick_IRQn 0 */
  /* USER CODE END SysTick_IRQn 0 */
  HAL_IncTick();
  HAL_SYSTICK_IRQHandler();
  /* USER CODE BEGIN SysTick_IRQn 1 */
  /* USER CODE END SysTick_IRQn 1 */
}
__IO uint32_t uwTick;
__weak void HAL_IncTick(void)
{
  uwTick += uwTickFreq;
}
每次SysTick异常中断后,会执行SysTick_Handler() 函数,然后HAL_IncTick()函数。由于uwTick是                                               无符号32位整型数,所以根据C语言的定义,当累计到0xFFFFFFFF后,再加1等于0。
  3.2 延时函数
__weak void HAL_Delay(uint32_t Delay)
{
  uint32_t tickstart = HAL_GetTick();
  uint32_t wait = Delay;
  /* Add a freq to guarantee minimum wait */
  if (wait < HAL_MAX_DELAY)
  {
    wait += (uint32_t)(uwTickFreq);
  }
  while ((HAL_GetTick() - tickstart) < wait)
  {
  }
}
__weak uint32_t HAL_GetTick(void)
{
  return uwTick;
}
由于tickstart和HAL_GetTick()的返回值都是无符号32位整型,所以HAL_GetTick() - tickstart                                                  =HAL_GetTick() + (~ tickstart) ,如果tickstart > HAL_GetTick(),也可以计算出两者之间正确的差值。

本文发布于:2023-07-29 08:51:04,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/196993.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:寄存器   时钟   产生   自动
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图