你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

HAL库配置系统滴答时钟问题

[复制链接]
xiang90721 提问时间:2017-9-27 10:01 /
对于F7 的HAL库,其初始化流程都是这样的:
  /* Enable the CPU Cache */
  CPU_CACHE_Enable();

  /* Init HAL */
  HAL_Init();

  /* Configure the system clock */
  SystemClock_Config();


在HAL_Init()函数中初始化了系统滴答时钟,但是这个时候SystemCoreClock 还没经过 SystemClock_Config();配置,也就是说这个时候SystemCoreClock = 16000000;,在经过SystemClock_Config();配置成其他时钟后(比如200或216M),系统滴答时钟是不准的。还需要使用SysTick_Config()配置一次才能正常,但这一步很多人会忘记的,以为前面已经配置了,这个小问题再次提醒大家。

还有一个问题是:想配置系统时钟1s一次中断,配置系统时钟源为8分频后,有问题了
比如如下配置后,不是1ms定时周期了
void Sys_Init(void)
{
   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);
   SysTick_Config(SystemCoreClock /8/1000);
}
这是什么问题呢?求指教?
收藏 评论5 发布时间:2017-9-27 10:01

举报

5个回答
斜阳 回答时间:2017-9-27 10:18:59
帮顶           
MrJiu 回答时间:2017-9-27 10:23:43
确实如你所说。。。。至于后面的嘛。。。可以进去库里面看看怎么设置的!!!
xiang90721 回答时间:2017-9-27 11:07:30
MrJiu 发表于 2017-9-27 10:23
确实如你所说。。。。至于后面的嘛。。。可以进去库里面看看怎么设置的!!! ...

谢谢提醒,问题找到:
void Sys_Init(void)
{
   SysTick_Config(SystemCoreClock /8/1000);
   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);
}
这样才是正确的配置方式!!具体原因看SysTick_Config函数

从stm32F7手册上看到时钟树,显示cortex系统时钟固定由AHB时钟的8分频提供
那为什么还有HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);选择1分频和8分频呢?
而且SysTick_Config(SystemCoreClock /1000)这样设置应该没法定时为1ms啊,因为系统时钟固定等于AHB/8的,所以这个有点困惑,是时钟树搞错了?求指教

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

stary666 回答时间:2017-9-27 14:13:01
看看了,,,,
五哥1 回答时间:2017-9-29 00:56:28
大神用CUBEMX 不是用这个设置的? 12.jpg

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版