2025-03-12 1:31 PM - edited 2025-03-12 1:33 PM
I am currently developing a board using the STM32WB09TEF7TR microcontroller.
Unfortunately, when the device is powered on, the microcontroller does not function properly.
It only starts working after manually resetting the reset pin.
To diagnose this issue, I am accessing the memory immediately after powering on the device in hot-plug mode to check its status.
The register bit log data is attached.
Could you help me understand the current state of this microcontroller?
Solved! Go to Solution.
2025-03-12 2:53 PM
Connecting with STM32CubeProgrammer and examining the register values will let you know where code execution is at by looking at the PC register. Probably it is in 0x08xxxxxx somewhere, which means it's in user code, possibly waiting for a clock to start up.
2025-03-12 2:53 PM
Connecting with STM32CubeProgrammer and examining the register values will let you know where code execution is at by looking at the PC register. Probably it is in 0x08xxxxxx somewhere, which means it's in user code, possibly waiting for a clock to start up.
2025-03-12 3:07 PM - edited 2025-03-12 3:08 PM
Thanks for letting me know.
Now, I understood how to analyze the status of the microcontroller.
My system is held on 0x10043D34 address when power is on, which means that the machine is in the Flash memory area. (LR : 0x10043A35)
Do you have any idea what this address exactly means?
2025-03-12 3:22 PM
I found the function having problem.
That is MX_RTC_Init().
I'm checking it more detail...
2025-03-12 3:39 PM
I found that 0x10043D34 is a "while" function in the Error_Handler.
So, a Problem happened here, LR : 0x10043A35 (MX_RTC_Init).
Now I can understand the detailed situation...
2025-03-12 4:44 PM
Insufficient LSE startup time is a somewhat common issue that causes this.
2025-03-13 7:10 AM
I want to conclude here.
This microcontroller is held on the "while" in the Error_Handler function.
So, I put the software restart command in the while function to address the initial booting problem like below.
void Error_Handler(void)
{
__disable_irq();
while (1)
{
NVIC_SystemReset();
}
}