Skip to main content
martonmiklos
Associate III
August 8, 2017
Solved

[BUG]STM32CubeMX STM32F1 FW. 1.6.0 LSI_VALUE undeclared

  • August 8, 2017
  • 5 replies
  • 2402 views
Posted on August 08, 2017 at 10:23

I have just updated one of my projects to STM32F1 FW 1.6.0, and my code was not able to compiled anymore. IOC file attached.

Here is my clocking scheme:

0690X00000607xsQAA.png

As you can see the LSI oscillator is not used, so I assume this is why the LSI_VALUE is not generated to the stm32f1xx_hal_rcc.h file. However the LSI_VALUE constant is still used in the stm32f1xx_hal_rcc_ex.c:

 case RCC_PERIPHCLK_RTC: 
 {
 /* Get RCC BDCR configuration ------------------------------------------------------*/
 temp_reg = RCC->BDCR;
 /* Check if LSE is ready if RTC clock selection is LSE */
 if (((temp_reg & RCC_BDCR_RTCSEL) == RCC_RTCCLKSOURCE_LSE) && (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSERDY)))
 {
 frequency = LSE_VALUE;
 }
 /* Check if LSI is ready if RTC clock selection is LSI */
 else if (((temp_reg & RCC_BDCR_RTCSEL) == RCC_RTCCLKSOURCE_LSI) && (HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY)))
 {
 frequency = LSI_VALUE;
 }
 else if (((temp_reg & RCC_BDCR_RTCSEL) == RCC_RTCCLKSOURCE_HSE_DIV128) && (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)))
 {
 frequency = HSE_VALUE / 128U;
 }
 /* Clock not enabled for RTC*/
 else
 {
 frequency = 0U;
 }
 break;�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?

#stm32f103 #cube-mx
This topic has been closed for replies.
Best answer by Sirma Siang
Posted on September 15, 2017 at 11:40

Hello

Marton.Miklos

,

I have tested under Ubuntu 5 LTS.

Using cube 4.1, I openned your ioc, and migrate it to that latest version.

Then I have generated the project and compile using Eclipse system workbench plugin.

F1 FMW version is 1.6.0.

Everything went well at my end (no compilation error).

You said that you are not able to compile anymore.

Could you please describe the symptoms and error you get ?

Thanks in advance

Kind regards

Sirma

5 replies

Khouloud GARSI
Technical Moderator
August 8, 2017
Posted on August 08, 2017 at 17:39

Hi

Marton.Miklos

‌,

Using the ioc file you have shared, I'm not facing any compilation issue: The 'LSI_VALUE' is defined in file 'stm32f1xx_hal_conf.h'.

Are you using the STM32CubeMX Version 4.0?

Khouloud.

martonmiklos
Associate III
August 8, 2017
Posted on August 08, 2017 at 18:22

Please see my reply below. Somehow I got the notification about this post before it appeared here...

Khouloud GARSI
Technical Moderator
August 9, 2017
Posted on August 09, 2017 at 18:32

My answer was under moderation. Before being approved, other users were not able to see it.

However, since you are the owner of this request, you have received a notification about it.

Khouloud.

martonmiklos
Associate III
August 8, 2017
Posted on August 08, 2017 at 17:47

Well I saw a reply here from

garsi.khouloud

, but I cannot see now.

To answer your question: yes I am using the 4.0 What I have forgotten to mention that I have generated code for the STM32 Workbench target. Please see my stm32f1xx_hal_conf.h attached, I cannot find the LSI_VALUE defined there.

Khouloud GARSI
Technical Moderator
August 8, 2017
Posted on August 08, 2017 at 22:31

Hi

Marton.Miklos

‌,

Even if the used IDE is the '

STM32 Workbench', I'm not able to reproduce the issue: No compilation errors and the '

LSI_VALUE' is correctly defined under the 'stm32f1xx_hal_conf.h' file.

I advise you to create your project using STM32CubeMX from scratch and see if the issue persists. I'm waiting for your feedback.

Khouloud.

martonmiklos
Associate III
August 15, 2017
Posted on August 15, 2017 at 10:41

Hello

garsi.khouloud

,

I have created a blank project for the same MCU, and it does not generate the LSI value constant.

I have forgotten to mention that I am running the CubeMX under Linux. I think it should not matter, but it seems to be.

0690X00000607tCQAQ.png

David McClurg
Visitor II
August 10, 2017
Posted on August 10, 2017 at 23:31

I seem to recall that I had the same issue when moving an existing project up to FW 1.6.  Initially, it was because I got a copy of FW 1.6 before the CubeMX template files had been updated for it.  Several days later, CubeMX was updated with the new templates for this version.  I believe that I had to actually make a change to the clock configuration, generate code from CubeMX, then change it back and generate code again before the correct template files got applied to my project.

My memory on this is a bit hazy, but it may be worth a try for you.

martonmiklos
Associate III
August 15, 2017
Posted on August 15, 2017 at 10:42

Hi David,

I have tried to change the clocking scheme for using the LSI osc, but it did not helped. However the constant did not even generated from a blank project too.

Sirma Siang
ST Employee
September 15, 2017
Posted on September 15, 2017 at 11:40

Hello

Marton.Miklos

,

I have tested under Ubuntu 5 LTS.

Using cube 4.1, I openned your ioc, and migrate it to that latest version.

Then I have generated the project and compile using Eclipse system workbench plugin.

F1 FMW version is 1.6.0.

Everything went well at my end (no compilation error).

You said that you are not able to compile anymore.

Could you please describe the symptoms and error you get ?

Thanks in advance

Kind regards

Sirma

martonmiklos
Associate III
September 15, 2017
Posted on September 15, 2017 at 13:05

Hi @Sirma Siang_O

After seeing that my updated CubeMX did not generated user sections to the USB init see here:

https://community.st.com/0D50X00009XkdmBSAR

I have reinstalled the CubeMX from scratch, and now the LSI_VALUE generation got corrected also.

Thank you for your help!

Gene Kozin
Visitor II
March 14, 2018
Posted on March 15, 2018 at 00:29

I've run into the same issue after updating STM32F1xx HAL from version 1.0.4 (STM32CubeF1 version 1.4) to version 1.1.1 (STM32CubeF1 version 1.6) on the existing project (not using CubeMX code generation).

stm32/projects/cpu/stm32/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c:579:21: error: 'LSI_VALUE' undeclared (first use in this function)

frequency = LSI_VALUE;

The relevant section of the HAL source code is shown below:

else if (((temp_reg & RCC_BDCR_RTCSEL) == RCC_RTCCLKSOURCE_LSI) && (HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY)))

{

   frequency = LSI_VALUE;

}

Any suggestions? Thanks!