硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1065|回复: 3
收起左侧

[STM32CubeMX] STM32CubeMX不支持选择SysTick时钟源原因分享

[复制链接]

210

主题

1043

回帖

1683

积分

至尊会员

More we do, more we can do.

积分
1683
发表于 2022-4-14 13:50:36 | 显示全部楼层 |阅读模式
本身没有什么深度,主要是追根溯源分析。

现象:
STM32Cube的F10x工程,里选择SysTick时钟源8分频没有实际效果。
截屏_2022-04-14_13-04-56.png

代码调用树:
main->HAL_Init->HAL_InitTick->HAL_SYSTICK_Config->SysTick_Config

其中SysTick_Config是非ST的接口代码(core_cm3.h),它总是置位SysTick_CTRL_CLKSOURCE_Msk(对应STM32Cube里的1分频)

[C] 纯文本查看 复制代码
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
  {
    return (1UL);                                                   /* Reload value impossible */
  }

  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
  return (0UL);                                                     /* Function successful */
}


那么为什么CMSIS代码是这样的呢?接着,我查阅内核手册:
CLKSOURCE: Value of 1 indicates that the core clock is used for the SysTick timer. Otherwise a reference clock frequency (depending on MCU design) is used.


这意思就清楚了,这个位是允许自定义,因而CMSIS总是置1.


回复

使用道具 举报

12

主题

75

回帖

111

积分

初级会员

积分
111
发表于 2022-4-14 23:38:02 | 显示全部楼层
"这个位是允许自定义,因而CMSIS总是置1."没看懂这句话的意思
回复

使用道具 举报

7

主题

48

回帖

69

积分

初级会员

积分
69
发表于 2022-4-16 19:35:03 | 显示全部楼层
仔细看这个帖子,来自于阿莫电子论坛
https://www.amobbs.com/thread-5764466-1-1.html
回复

使用道具 举报

1

主题

17

回帖

20

积分

新手上路

积分
20
QQ
发表于 2022-4-19 09:03:09 | 显示全部楼层
谢谢分享   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 16:37 , Processed in 0.171097 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表