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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版