2025-07-17 8:36 AM
I am learning to use the PWM Input mode to measure input frequency. I am using examples from the internet to help me along.
In my .ioc file SYSCLK is set to 8MHz and with a prescaler set to /8 my HCLK and APB1 are set 1Mhz
In the examples I studied in the callback routine Frequency is calculated either:
1: 1000000 / capture_value
while another uses this method
2: SystemCoreClock / capture_value
Method 1: works but in case you eventually need to change the prescaler you also need to change the constant.
Method 2: sounds more robust but when I hover over "SystemCoreClock" in main.c a window comes up stating that SystemCoreClock is set to 8000000 anyway. What variable do I need to use to ensure that the value used in the calculation is in fact HCLK or APB1?
Solved! Go to Solution.
2025-07-23 6:04 AM
I would look at the source code. They're documented well.
2025-07-17 10:05 AM
Since it's a timer, you want to get the timer tick rate, which is either APB1 or APB1 * 2. You can get this using HAL_RCC_GetPCLK1Freq and HAL_RCC_GetClockConfig.
2025-07-18 4:59 AM - last edited on 2025-07-18 5:57 AM by mƎALLEm
Ok thanks. I need to read up on that.
Whilst studying file stm32f1xx_hal_rcc.c I noted the following:
uint32_t HAL_RCC_GetHCLKFreq(void)
{
return SystemCoreClock;
}
As I understand it this is the routine to use if you want to get HCLK which for me is the same as APB1 at 1000000.
This too returns SystemCoreClock so shouldn't this also show 1000000 when I hover on it in main.c?
2025-07-18 6:01 AM
@xuraax wrote:
As I understand it this is the routine to use if you want to get HCLK which for me is the same as APB1 at 1000000.This too returns SystemCoreClock so shouldn't this also show 1000000 when I hover on it in main.c?
That depends on the APB prescalers:
If APB1 prescaler = 1, HCLK and APB1 frequencies are equal. As said by @TDK you need to use HAL_RCC_GetPCLK1Freq and HAL_RCC_GetClockConfig no matter the APB division.
2025-07-22 9:51 PM
Thank you.
Where would one go to learn about these calls?
So far, I use Utube videos and forums such as this to learn about options but i am sure there is a wiki somewhere.
2025-07-23 6:04 AM
I would look at the source code. They're documented well.
2025-07-27 5:35 AM
Thank you
2025-07-27 5:37 AM
For some reason the button "Accept as Solution" is not coming up on my screen
2025-07-27 6:47 AM
You've already accepted a solution here. If you did so in error, you can undo it. Otherwise, you're good to go.