cancel
Showing results for 
Search instead for 
Did you mean: 

STM32L552 Nucleo board: HSE error

krook
Associate II

Hi, I am trying to program a STM32L552ZEQ to use HSE instead of the default clock, but I am doing something wrong.

I attach the reference manual, as well as the user manual for my specific board. In the user manual, on page 24, it is stated that there is a HSE with 16 MHz clock frequency. I try to enable this by setting the HSEBYP and HSEON bits in `RCC->CR`, like so

```

RCC->CR |= RCC_CR_HSEBYP_Msk | RCC_CR_HSEON_Msk;
while(!(RCC->CR & RCC_CR_HSERDY_Msk));

```

Using GDB I observe the change to the register value happening as expected. After setting it, I am waiting for the hardware to set the HSERDY bit, indicating that everything went OK. But this bit is never set. I never seem to get out of this while-loop. I observe the bit not being set using e.g. GDB.

I looked at the reference manual and saw that MCO is fed to OSC_IN, which seems correct.

diagr.png

I then thought that it appears as if the MCO can be connected to several different sources, one of which being the HSE. I look at the reference manual, and find this

Screenshot from 2024-10-10 16-02-41.pngScreenshot from 2024-10-10 16-02-28.png

I modify my code to configure MCOSEL to have the value `0100`, to indicate that we should output the HSE to the MCO pin. I am using the CMSIS header files to access the correct addresses, and it seems as if the define for MCOSEL_2 carries the right value (4).

```

// the define is in the CMSIS header-file, but I paste it here for clarity

#define RCC_CFGR_MCOSEL_2 (0x4UL << RCC_CFGR_MCOSEL_Pos) /*!< 0x04000000 */
RCC->CFGR |= RCC_CFGR_MCOSEL_2;
```
This seems to make no difference at all, and I am now a bit unsure of how to progress.
 
Thanks in advance for any tips that might make me able to figure this out.
21 REPLIES 21

I will have to return to this thread when I've gotten my hands on those components. Thanks for your help so far!

Hello @krook ,

Just to remind you that even with STLINK-V3 (the version on STM32L552ZEQ Nucleo board), the MCO is configurable and the default config is generated from HSI (HSI/2 = 8MHz) not the HSE crystal of the STLINK.

So if you are looking for an accurate clock source, you need to configure your STLINK. Please read this article.

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.