使用CUBEMX的嘀嗒定时器怎么配置,例如1s中断一次

2019-07-20 22:54发布

如题!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
Polychromatic
1楼-- · 2019-07-21 04:53
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/configTICK_RATE_HZ);
  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

configTICK_RATE_HZ 默认1000
改为 1就是1S了
cyj521
2楼-- · 2019-07-21 05:36
 精彩回答 2  元偷偷看……
cyj521
3楼-- · 2019-07-21 08:09
Polychromatic 发表于 2019-7-6 16:19
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/configTICK_RATE_HZ);
  HAL_SYSTICK_CLKSourceConfig(SYSTI ...


    /**Configure the Systick interrupt time
    */
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

    /**Configure the Systick
    */
  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
上面是工程自动生成的,如果把1000改成1,重新生成后又自动改回来了
而且CUBE里面有个Timebase source选项,默认就是SysTick且不能修改,手动把1000改成1会有别的问题吗
Polychromatic
4楼-- · 2019-07-21 12:23
本帖最后由 Polychromatic 于 2019-7-9 09:17 编辑
cyj521 发表于 2019-7-9 08:45
/**Configure the Systick interrupt time
    */
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() ...

Timebase source 就是下面的HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

SYSTICK_CLKSOURCE_HCLK

SYSTICK_CLKSOURCE_HCLK_DIV8

这样吧,HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);
如果你的主频是 72Mhz,那么分频后就是9Mhz,然后要定时1S,就只需要systick初值为 9000000
因为看了systick的 最大值是 0xFFFFFFH所以,如果你CPU的频率大于了这个值,不能直接 把主频赋值给systick。

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/8);
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);

cyj521
5楼-- · 2019-07-21 17:47
 精彩回答 2  元偷偷看……
Polychromatic
6楼-- · 2019-07-21 20:09
cyj521 发表于 2019-7-9 10:13
那这样改了,使用CUBE生成代码又变回来了,怎么办?

在对着改一次。HAL_Init里面

一周热门 更多>