黑皮男 发表于 2015-6-8 13:55:02

HAL库SYSTICK设置问题

HAL库的例程中是先调用HAL_Init()这个函数,然后调用SystemClock_Config(),但是SysTick的配置是在HAL_Init()中做的,然后在用SystemColck_Config()配置时钟,不是会导致SysTick()实际的时钟频率和配置的时钟频率不一致的情况吗

黑皮男 发表于 2015-6-8 14:17:25

是不是在设置完时钟后还需要重新设置一下SysTick

数码小叶 发表于 2015-6-8 14:31:49

貌似没太懂具体意思:o

发表于 2015-6-8 14:53:56

不怎么用这个库,启动时通过SystemInit已经初始化了系统时钟,但是后面为什么还要初始化,我也不太明白。还得先了解一下这个CM怎么用。

黑皮男 发表于 2015-6-8 15:25:25

数码小叶 发表于 2015-6-8 14:31
貌似没太懂具体意思

HAL_Init()已经初始化了SysTick的时钟源的频率,再用SystemClock_Config()初始化系统时钟后,那么SysTick实际的时钟源的频率不就可能发生变化吗,那么和开始用HAL_Init()初始化时所用的时钟频率是不同的了,那么后面再用库中提供的延时函数不就不准确了吗

黑皮男 发表于 2015-6-8 15:26:46

安 发表于 2015-6-8 14:53
不怎么用这个库,启动时通过SystemInit已经初始化了系统时钟,但是后面为什么还要初始化,我也不太明白。还 ...

启动初始化的时钟是72MHz未必满足要求,后面初始化的才是自己需要的时钟频率

creep 发表于 2015-6-8 15:34:21

在SystemClock_Config();函数中调用了HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2)
而HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2)又调用了HAL_InitTick (TICK_INT_PRIORITY);重新获得了新的系统时钟。HAL_InitTick (TICK_INT_PRIORITY);函数中有得到系统时钟的函数HAL_RCC_GetHCLKFreq(),
所以即使修改了系统时钟,但是systick也重新获得了新的系统时钟。

黑皮男 发表于 2015-6-8 15:58:27

creep 发表于 2015-6-8 15:34
在SystemClock_Config();函数中调用了HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2)
而HAL_RC ...

多谢解惑,我看的不够仔细,呵呵

数码小叶 发表于 2015-6-9 19:33:47

黑皮男 发表于 2015-6-8 15:25
HAL_Init()已经初始化了SysTick的时钟源的频率,再用SystemClock_Config()初始化系统时钟后,那么SysTick ...

你还是仔细看下代码吧,哈哈哈

黑皮男 发表于 2015-6-10 08:14:30

数码小叶 发表于 2015-6-9 19:33
你还是仔细看下代码吧,哈哈哈

多谢楼主指点,现已知晓
页: [1] 2
查看完整版本: HAL库SYSTICK设置问题