Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years, 2 months ago.
NUCLEO F302R8 with HSI
I have a NUCLEO-F302R8 with a cutted off ST-LINK. So the only possible clock souces are HSE_XTAL and HSI. When I compile it with the target settings for NUCLEO-F302R8 the system won't start. A compile with target setting for NUCLEO-F303K8 will start the system without any problems. The difference between the both setting is, that the F302R8 use HSE_EXTC and the F303K8 use HSI. It's not possible to use the F303K8 settings because there are a lot of pins missed.
Then I tried the compile time configuration mit *.json files in the root (described here)
a targets.json in the root will produce a internal error without any futher description
targets.json
{ "myboard": { "inherits": ["FAMILY_STM32"], "supported_form_factors": ["ARDUINO", "MORPHO"], "core": "Cortex-M4F", "extra_labels_add": ["STM32F3", "STM32F302x8", "STM32F302R8"], "config": { "clock_source": { "help": "Mask value : USE_PLL_HSE_EXTC | USE_PLL_HSE_XTAL (need HW patch) | USE_PLL_HSI", "value": "USE_PLL_HSI", "macro_name": "CLOCK_SOURCE" } }, "detect_code": ["0705"], "device_has_add": ["ANALOGOUT", "CAN", "LOWPOWERTIMER", "SERIAL_ASYNCH", "SERIAL_FC"], "default_lib": "small", "release_versions": ["2"], "device_name": "STM32F302R8" } }
A mbed_app.json
{ "myboard": { "inherits": ["FAMILY_STM32"], "supported_form_factors": ["ARDUINO", "MORPHO"], "core": "Cortex-M4F", "extra_labels_add": ["STM32F3", "STM32F302x8", "STM32F302R8"], "config": { "clock_source": { "help": "Mask value : USE_PLL_HSE_EXTC | USE_PLL_HSE_XTAL (need HW patch) | USE_PLL_HSI", "value": "USE_PLL_HSI", "macro_name": "CLOCK_SOURCE" } }, "detect_code": ["0705"], "device_has_add": ["ANALOGOUT", "CAN", "LOWPOWERTIMER", "SERIAL_ASYNCH", "SERIAL_FC"], "default_lib": "small", "release_versions": ["2"], "device_name": "STM32F302R8" } }
generates: Error: Unknown key(s) 'myboard' in mbed_app.json
A mbed_app.json
{ "target_overrides": { "NUCLEO_F302R8": { "config": { "clock_source": { "help": "Mask value : USE_PLL_HSE_EXTC | USE_PLL_HSE_XTAL (need HW patch) | USE_PLL_HSI", "value": "USE_PLL_HSI", "macro_name": "CLOCK_SOURCE" } } } } }
generates: Error: Attempt to override undefined parameter 'app.config' in 'application[NUCLEO_F302R8]'
and a mbed_app.json
{ "target_overrides": { "NUCLEO_F302R8": { "clock_source": { "help": "Mask value : USE_PLL_HSE_EXTC | USE_PLL_HSE_XTAL (need HW patch) | USE_PLL_HSI", "value": "USE_PLL_HSI", "macro_name": "CLOCK_SOURCE" } } } }
generates: Warning: Incompatible redefinition of macro "CLOCK_SOURCE" in "build/mbed_config.h" and the system doesn't start.
How could I change the clock source during the start procedure?
1 Answer
7 years, 2 months ago.
Hi
Update your mbed_app.json :
{ "target_overrides": { "NUCLEO_F302R8": { "target.clock_source": "USE_PLL_HSI" } } }
I tried this on a new NUCLEO board.
a printf( "CLOCK_SOURCE = %X\n", CLOCK_SOURCE ); shows me the correct value on every compile target setting (F302R8 and F303K8).
But a readout of the RCC_CR shows me the same difference as before. On a compile with F302R8 the HSE_ON is 1 and on a compile with F302K8 the HSE_ON is 0. Looks like the clock configuration is done before the mbed_app.json is compiled.
It looks like the following compiling sequence:
- targets.json with all its *.h and *.cpp files
- all other SDK *.json files
- mbed_app.json
- main.cpp
- ...
targets.json should be the way to go. can you make your board inherit from NUCLEO-F302R8 instead and then only specify clock source config? Many boards do it this way.
For your question related to mbed_app.json I opened a ticket.
posted by Jan Jongboom 05 Oct 2017I haved tested with custom_targets.json as decribed in https://docs.mbed.com/docs/mbed-os-handbook/en/latest/advanced/mbed_targets/
custom_targets.json
Looks like it wasn't used
Maybe it is a further problem. How could I select this custom target "myboard"?
posted by Gerhard Herrmann 05 Oct 2017New insights:
In the mbed OS sources there ia a
system_clock.c
for the clock settings of the STM core. (found in\targets\TARGET_STM\TARGET_STM32F3\TARGET_STM32F302x8\TARGET_NUCLEO_F302R8
). Here theCLOCK_SOURCE
macro is used the set the RCC_RC register. In the exported library package for the mbed CLI there is only asystem_clock.o
. So it is precomiled.Now I could change the
CLOCK_SOURCE
macro where I want, but nothing changed!!This works neither in the mbed CLI nor in the online IDE!!
posted by Gerhard Herrmann 10 Oct 2017