Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cpu/stm32l4: configure and initialize MCO #15064

Merged
merged 1 commit into from Nov 5, 2020

Conversation

aabadie
Copy link
Contributor

@aabadie aabadie commented Sep 23, 2020

Contribution description

This PR extends the STM32L4 clock config/initialization with MCO (microcontroller clock output). This feature allows to output one clock source between LSE, LSI, HSE, HSI, PLLCLK or SYSCLK to a GPIO pin (PA8 with AF0).

This PR makes all possible clock sources usable and also allows to configure the MCO prescaler (among 1, 2, 4, 8, 16, the defaut is 1).

Using one of the MCO clock source will automatically enable the corresponding underlying clock. So for example, it's possible to use HSI as system clock while using the PLLCLK as input clock for MCO.

There's one open question with this PR: does it make sense to configure the MCO pin (PA8/AF0) in stmclk init function (as done in this PR) or should this be left to the responsibility of the developper ?

Testing procedure

To test this PR, one needs a logic analyzer or a scope to verify the clock output on PA8 when MCO is enabled. I'm using a chinese saelae logic analyzer with PulseView on Ubuntu. In this setup, I cannot have a clean measure for clock frequency > 24MHz because my logic analyzer has a maximum sample rate of 48MHz.

Here I provide the output of MCO measured with a nucleo-l412kb, PA8 is available on D9. Any application can be used, so here I'm testing with examples/hello-world.

MCO: LSE => expected frequency is 32768kHz

image

$ CFLAGS="-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_LSE=1 -DCONFIG_CLOCK_MCO_PRE=1" BUILD_IN_DOCKER=1  make BOARD=nucleo-l412kb -C examples/hello-world flash term --no-print-directory 
Launching build container using image "riot/riotbuild:latest".
docker run --rm --tty --user $(id -u) -v '/usr/share/zoneinfo/Europe/Paris:/etc/localtime:ro' -v '/work/riot/RIOT:/data/riotbuild/riotbase:delegated' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'      -e 'BOARD=nucleo-l412kb' -e 'CFLAGS=-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_LSE=1 -DCONFIG_CLOCK_MCO_PRE=1'  -w '/data/riotbuild/riotbase/examples/hello-world/' 'riot/riotbuild:latest' make 'BOARD=nucleo-l412kb'    
Building application "hello-world" for "nucleo-l412kb" with MCU "stm32".

"make" -C /data/riotbuild/riotbase/boards/nucleo-l412kb
"make" -C /data/riotbuild/riotbase/boards/common/nucleo
"make" -C /data/riotbuild/riotbase/core
"make" -C /data/riotbuild/riotbase/cpu/stm32
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/bootloader
"make" -C /data/riotbuild/riotbase/cpu/stm32/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/stmclk
"make" -C /data/riotbuild/riotbase/cpu/stm32/vectors
"make" -C /data/riotbuild/riotbase/drivers
"make" -C /data/riotbuild/riotbase/drivers/periph_common
"make" -C /data/riotbuild/riotbase/sys
"make" -C /data/riotbuild/riotbase/sys/auto_init
"make" -C /data/riotbuild/riotbase/sys/newlib_syscalls_default
"make" -C /data/riotbuild/riotbase/sys/pm_layered
"make" -C /data/riotbuild/riotbase/sys/stdio_uart
   text	   data	    bss	    dec	    hex	filename
   9064	    112	   2312	  11488	   2ce0	/data/riotbuild/riotbase/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
/work/riot/RIOT/dist/tools/openocd/openocd.sh flash /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
### Flashing Target ###
Open On-Chip Debugger 0.10.0+dev-01383-gd46f28c2e-dirty (2020-08-20-10:53)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
hla_swd
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
srst_only separate srst_nogate srst_open_drain connect_assert_srst

Info : clock speed 500 kHz
Info : STLINK V2J31M21 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.248453
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32l4x.cpu on 0
Info : Listening on port 44123 for gdb connections
    TargetName         Type       Endian TapName            State       
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32l4x.cpu       hla_target little stm32l4x.cpu       reset

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x08000774 msp: 0x20000200
Info : device idcode = 0x10006464 (STM32L41/L42xx - Rev: A)
Info : flash size = 128kbytes
Info : flash mode : single-bank
Warn : Adding extra erase range, 0x080023d8 .. 0x080027ff
auto erase enabled
wrote 9176 bytes from file /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf in 0.630969s (14.202 KiB/s)

verified 9176 bytes in 0.441411s (20.301 KiB/s)

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
shutdown command invoked
Done flashing
/work/riot/RIOT/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200"  
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2020-09-23 11:25:31,541 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2020-09-23 11:25:32,938 # �in(): This is RIOT! (Version: 2020.10-devel-1448-g2c3a2-pr/cpu/stm32l4_mco)
2020-09-23 11:25:32,938 # Hello World!
2020-09-23 11:25:32,943 # You are running RIOT on a(n) nucleo-l412kb board.
2020-09-23 11:25:32,946 # This board features a(n) stm32 MCU.
2020-09-23 11:25:35,496 # Exiting Pyterm
MCO: LSI => expected frequency is 32kHz (one can also see that measure are not 100% stable)

image

$ CFLAGS="-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_LSI=1 -DCONFIG_CLOCK_MCO_PRE=1" BUILD_IN_DOCKER=1  make BOARD=nucleo-l412kb -C examples/hello-world flash term --no-print-directory 
Launching build container using image "riot/riotbuild:latest".
docker run --rm --tty --user $(id -u) -v '/usr/share/zoneinfo/Europe/Paris:/etc/localtime:ro' -v '/work/riot/RIOT:/data/riotbuild/riotbase:delegated' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'      -e 'BOARD=nucleo-l412kb' -e 'CFLAGS=-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_LSI=1 -DCONFIG_CLOCK_MCO_PRE=1'  -w '/data/riotbuild/riotbase/examples/hello-world/' 'riot/riotbuild:latest' make 'BOARD=nucleo-l412kb'    
Building application "hello-world" for "nucleo-l412kb" with MCU "stm32".

"make" -C /data/riotbuild/riotbase/boards/nucleo-l412kb
"make" -C /data/riotbuild/riotbase/boards/common/nucleo
"make" -C /data/riotbuild/riotbase/core
"make" -C /data/riotbuild/riotbase/cpu/stm32
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/bootloader
"make" -C /data/riotbuild/riotbase/cpu/stm32/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/stmclk
"make" -C /data/riotbuild/riotbase/cpu/stm32/vectors
"make" -C /data/riotbuild/riotbase/drivers
"make" -C /data/riotbuild/riotbase/drivers/periph_common
"make" -C /data/riotbuild/riotbase/sys
"make" -C /data/riotbuild/riotbase/sys/auto_init
"make" -C /data/riotbuild/riotbase/sys/newlib_syscalls_default
"make" -C /data/riotbuild/riotbase/sys/pm_layered
"make" -C /data/riotbuild/riotbase/sys/stdio_uart
   text	   data	    bss	    dec	    hex	filename
   9064	    112	   2312	  11488	   2ce0	/data/riotbuild/riotbase/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
/work/riot/RIOT/dist/tools/openocd/openocd.sh flash /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
### Flashing Target ###
Open On-Chip Debugger 0.10.0+dev-01383-gd46f28c2e-dirty (2020-08-20-10:53)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
hla_swd
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
srst_only separate srst_nogate srst_open_drain connect_assert_srst

Info : clock speed 500 kHz
Info : STLINK V2J31M21 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.248453
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32l4x.cpu on 0
Info : Listening on port 37067 for gdb connections
    TargetName         Type       Endian TapName            State       
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32l4x.cpu       hla_target little stm32l4x.cpu       reset

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x08000738 msp: 0x20000200
Info : device idcode = 0x10006464 (STM32L41/L42xx - Rev: A)
Info : flash size = 128kbytes
Info : flash mode : single-bank
Warn : Adding extra erase range, 0x080023d8 .. 0x080027ff
auto erase enabled
wrote 9176 bytes from file /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf in 0.618351s (14.492 KiB/s)

verified 9176 bytes in 0.435522s (20.575 KiB/s)

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
shutdown command invoked
Done flashing
/work/riot/RIOT/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200"  
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2020-09-23 11:27:40,861 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2020-09-23 11:27:44,002 # main(): This is RIOT! (Version: 2020.10-devel-1448-g2c3a2-pr/cpu/stm32l4_mco)
2020-09-23 11:27:44,003 # Hello World!
2020-09-23 11:27:44,008 # You are running RIOT on a(n) nucleo-l412kb board.
2020-09-23 11:27:44,011 # This board features a(n) stm32 MCU.
2020-09-23 11:27:45,180 # Exiting Pyterm
MCO: HSI => expected frequency is 16MHz

image

$ CFLAGS="-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_HSI=1 -DCONFIG_CLOCK_MCO_PRE=1" BUILD_IN_DOCKER=1  make BOARD=nucleo-l412kb -C examples/hello-world flash term --no-print-directory 
Launching build container using image "riot/riotbuild:latest".
docker run --rm --tty --user $(id -u) -v '/usr/share/zoneinfo/Europe/Paris:/etc/localtime:ro' -v '/work/riot/RIOT:/data/riotbuild/riotbase:delegated' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'      -e 'BOARD=nucleo-l412kb' -e 'CFLAGS=-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_HSI=1 -DCONFIG_CLOCK_MCO_PRE=1'  -w '/data/riotbuild/riotbase/examples/hello-world/' 'riot/riotbuild:latest' make 'BOARD=nucleo-l412kb'    
Building application "hello-world" for "nucleo-l412kb" with MCU "stm32".

"make" -C /data/riotbuild/riotbase/boards/nucleo-l412kb
"make" -C /data/riotbuild/riotbase/boards/common/nucleo
"make" -C /data/riotbuild/riotbase/core
"make" -C /data/riotbuild/riotbase/cpu/stm32
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/bootloader
"make" -C /data/riotbuild/riotbase/cpu/stm32/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/stmclk
"make" -C /data/riotbuild/riotbase/cpu/stm32/vectors
"make" -C /data/riotbuild/riotbase/drivers
"make" -C /data/riotbuild/riotbase/drivers/periph_common
"make" -C /data/riotbuild/riotbase/sys
"make" -C /data/riotbuild/riotbase/sys/auto_init
"make" -C /data/riotbuild/riotbase/sys/newlib_syscalls_default
"make" -C /data/riotbuild/riotbase/sys/pm_layered
"make" -C /data/riotbuild/riotbase/sys/stdio_uart
   text	   data	    bss	    dec	    hex	filename
   9000	    112	   2312	  11424	   2ca0	/data/riotbuild/riotbase/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
/work/riot/RIOT/dist/tools/openocd/openocd.sh flash /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
### Flashing Target ###
Open On-Chip Debugger 0.10.0+dev-01383-gd46f28c2e-dirty (2020-08-20-10:53)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
hla_swd
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
srst_only separate srst_nogate srst_open_drain connect_assert_srst

Info : clock speed 500 kHz
Info : STLINK V2J31M21 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.248453
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32l4x.cpu on 0
Info : Listening on port 39161 for gdb connections
    TargetName         Type       Endian TapName            State       
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32l4x.cpu       hla_target little stm32l4x.cpu       reset

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x08000738 msp: 0x20000200
Info : device idcode = 0x10006464 (STM32L41/L42xx - Rev: A)
Info : flash size = 128kbytes
Info : flash mode : single-bank
Warn : Adding extra erase range, 0x08002398 .. 0x080027ff
auto erase enabled
wrote 9112 bytes from file /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf in 0.626998s (14.192 KiB/s)

verified 9112 bytes in 0.441664s (20.148 KiB/s)

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
shutdown command invoked
Done flashing
/work/riot/RIOT/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200"  
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2020-09-23 11:30:51,892 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2020-09-23 11:31:57,974 # �in(): This is RIOT! (Version: 2020.10-devel-1448-g2c3a2-pr/cpu/stm32l4_mco)
2020-09-23 11:31:57,975 # Hello World!
2020-09-23 11:31:57,980 # You are running RIOT on a(n) nucleo-l412kb board.
2020-09-23 11:31:57,983 # This board features a(n) stm32 MCU.
2020-09-23 11:31:59,079 # Exiting Pyterm
MCO: HSI (16MHz) + prescaler 16 => expected frequency is 1MHz

image

$ CFLAGS="-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_HSI=1 -DCONFIG_CLOCK_MCO_PRE=16" BUILD_IN_DOCKER=1  make BOARD=nucleo-l412kb -C examples/hello-world flash term --no-print-directory 
Launching build container using image "riot/riotbuild:latest".
docker run --rm --tty --user $(id -u) -v '/usr/share/zoneinfo/Europe/Paris:/etc/localtime:ro' -v '/work/riot/RIOT:/data/riotbuild/riotbase:delegated' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'      -e 'BOARD=nucleo-l412kb' -e 'CFLAGS=-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_HSI=1 -DCONFIG_CLOCK_MCO_PRE=16'  -w '/data/riotbuild/riotbase/examples/hello-world/' 'riot/riotbuild:latest' make 'BOARD=nucleo-l412kb'    
Building application "hello-world" for "nucleo-l412kb" with MCU "stm32".

"make" -C /data/riotbuild/riotbase/boards/nucleo-l412kb
"make" -C /data/riotbuild/riotbase/boards/common/nucleo
"make" -C /data/riotbuild/riotbase/core
"make" -C /data/riotbuild/riotbase/cpu/stm32
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/bootloader
"make" -C /data/riotbuild/riotbase/cpu/stm32/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/stmclk
"make" -C /data/riotbuild/riotbase/cpu/stm32/vectors
"make" -C /data/riotbuild/riotbase/drivers
"make" -C /data/riotbuild/riotbase/drivers/periph_common
"make" -C /data/riotbuild/riotbase/sys
"make" -C /data/riotbuild/riotbase/sys/auto_init
"make" -C /data/riotbuild/riotbase/sys/newlib_syscalls_default
"make" -C /data/riotbuild/riotbase/sys/pm_layered
"make" -C /data/riotbuild/riotbase/sys/stdio_uart
   text	   data	    bss	    dec	    hex	filename
   9000	    112	   2312	  11424	   2ca0	/data/riotbuild/riotbase/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
/work/riot/RIOT/dist/tools/openocd/openocd.sh flash /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
### Flashing Target ###
Open On-Chip Debugger 0.10.0+dev-01383-gd46f28c2e-dirty (2020-08-20-10:53)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
hla_swd
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
srst_only separate srst_nogate srst_open_drain connect_assert_srst

Info : clock speed 500 kHz
Info : STLINK V2J31M21 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.245293
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32l4x.cpu on 0
Info : Listening on port 38437 for gdb connections
    TargetName         Type       Endian TapName            State       
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32l4x.cpu       hla_target little stm32l4x.cpu       reset

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x08000738 msp: 0x20000200
Info : device idcode = 0x10006464 (STM32L41/L42xx - Rev: A)
Info : flash size = 128kbytes
Info : flash mode : single-bank
Warn : Adding extra erase range, 0x08002398 .. 0x080027ff
auto erase enabled
wrote 9112 bytes from file /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf in 0.623708s (14.267 KiB/s)

verified 9112 bytes in 0.449007s (19.818 KiB/s)

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
shutdown command invoked
Done flashing
/work/riot/RIOT/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200"  
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2020-09-23 11:32:30,016 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2020-09-23 11:33:08,244 # main(): This is RIOT! (Version: 2020.10-devel-1448-g2c3a2-pr/cpu/stm32l4_mco)
2020-09-23 11:33:08,245 # Hello World!
2020-09-23 11:33:08,249 # You are running RIOT on a(n) nucleo-l412kb board.
2020-09-23 11:33:08,252 # This board features a(n) stm32 MCU.
2020-09-23 11:33:09,339 # Exiting Pyterm
MCO: MSI (48MHz) + prescaler 8 => expected frequency is 6MHz

image

$ CFLAGS="-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_MSI=1 -DCONFIG_CLOCK_MCO_PRE=8" BUILD_IN_DOCKER=1  make BOARD=nucleo-l412kb -C examples/hello-world flash term --no-print-directory 
Launching build container using image "riot/riotbuild:latest".
docker run --rm --tty --user $(id -u) -v '/usr/share/zoneinfo/Europe/Paris:/etc/localtime:ro' -v '/work/riot/RIOT:/data/riotbuild/riotbase:delegated' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'      -e 'BOARD=nucleo-l412kb' -e 'CFLAGS=-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_MSI=1 -DCONFIG_CLOCK_MCO_PRE=8'  -w '/data/riotbuild/riotbase/examples/hello-world/' 'riot/riotbuild:latest' make 'BOARD=nucleo-l412kb'    
Building application "hello-world" for "nucleo-l412kb" with MCU "stm32".

"make" -C /data/riotbuild/riotbase/boards/nucleo-l412kb
"make" -C /data/riotbuild/riotbase/boards/common/nucleo
"make" -C /data/riotbuild/riotbase/core
"make" -C /data/riotbuild/riotbase/cpu/stm32
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/bootloader
"make" -C /data/riotbuild/riotbase/cpu/stm32/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/stmclk
"make" -C /data/riotbuild/riotbase/cpu/stm32/vectors
"make" -C /data/riotbuild/riotbase/drivers
"make" -C /data/riotbuild/riotbase/drivers/periph_common
"make" -C /data/riotbuild/riotbase/sys
"make" -C /data/riotbuild/riotbase/sys/auto_init
"make" -C /data/riotbuild/riotbase/sys/newlib_syscalls_default
"make" -C /data/riotbuild/riotbase/sys/pm_layered
"make" -C /data/riotbuild/riotbase/sys/stdio_uart
   text	   data	    bss	    dec	    hex	filename
   9048	    112	   2312	  11472	   2cd0	/data/riotbuild/riotbase/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
/work/riot/RIOT/dist/tools/openocd/openocd.sh flash /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
### Flashing Target ###
Open On-Chip Debugger 0.10.0+dev-01383-gd46f28c2e-dirty (2020-08-20-10:53)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
hla_swd
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
srst_only separate srst_nogate srst_open_drain connect_assert_srst

Info : clock speed 500 kHz
Info : STLINK V2J31M21 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.248453
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32l4x.cpu on 0
Info : Listening on port 45155 for gdb connections
    TargetName         Type       Endian TapName            State       
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32l4x.cpu       hla_target little stm32l4x.cpu       reset

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x08000738 msp: 0x20000200
Info : device idcode = 0x10006464 (STM32L41/L42xx - Rev: A)
Info : flash size = 128kbytes
Info : flash mode : single-bank
Warn : Adding extra erase range, 0x080023c8 .. 0x080027ff
auto erase enabled
wrote 9160 bytes from file /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf in 0.626065s (14.288 KiB/s)

verified 9160 bytes in 0.444762s (20.113 KiB/s)

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
shutdown command invoked
Done flashing
/work/riot/RIOT/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200"  
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2020-09-23 11:33:40,448 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2020-09-23 11:34:19,674 # main(): This is RIOT! (Version: 2020.10-devel-1448-g2c3a2-pr/cpu/stm32l4_mco)
2020-09-23 11:34:19,675 # Hello World!
2020-09-23 11:34:19,680 # You are running RIOT on a(n) nucleo-l412kb board.
2020-09-23 11:34:19,683 # This board features a(n) stm32 MCU.
2020-09-23 11:34:20,570 # Exiting Pyterm
MCO: PLLCLK + HSI used as SYSCLK (16MHz) + prescaler 8 => expected frequency is 10MHz (because PLLCLK is 80MHz by default)

image

$ CFLAGS="-DCONFIG_USE_CLOCK_HSI=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_PLLCLK=1 -DCONFIG_CLOCK_MCO_PRE=8" BUILD_IN_DOCKER=1  make BOARD=nucleo-l412kb -C examples/hello-world flash term --no-print-directory 
Launching build container using image "riot/riotbuild:latest".
docker run --rm --tty --user $(id -u) -v '/usr/share/zoneinfo/Europe/Paris:/etc/localtime:ro' -v '/work/riot/RIOT:/data/riotbuild/riotbase:delegated' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'      -e 'BOARD=nucleo-l412kb' -e 'CFLAGS=-DCONFIG_USE_CLOCK_HSI=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_PLLCLK=1 -DCONFIG_CLOCK_MCO_PRE=8'  -w '/data/riotbuild/riotbase/examples/hello-world/' 'riot/riotbuild:latest' make 'BOARD=nucleo-l412kb'    
Building application "hello-world" for "nucleo-l412kb" with MCU "stm32".

"make" -C /data/riotbuild/riotbase/boards/nucleo-l412kb
"make" -C /data/riotbuild/riotbase/boards/common/nucleo
"make" -C /data/riotbuild/riotbase/core
"make" -C /data/riotbuild/riotbase/cpu/stm32
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/bootloader
"make" -C /data/riotbuild/riotbase/cpu/stm32/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/stmclk
"make" -C /data/riotbuild/riotbase/cpu/stm32/vectors
"make" -C /data/riotbuild/riotbase/drivers
"make" -C /data/riotbuild/riotbase/drivers/periph_common
"make" -C /data/riotbuild/riotbase/sys
"make" -C /data/riotbuild/riotbase/sys/auto_init
"make" -C /data/riotbuild/riotbase/sys/newlib_syscalls_default
"make" -C /data/riotbuild/riotbase/sys/pm_layered
"make" -C /data/riotbuild/riotbase/sys/stdio_uart
   text	   data	    bss	    dec	    hex	filename
   8984	    112	   2312	  11408	   2c90	/data/riotbuild/riotbase/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
/work/riot/RIOT/dist/tools/openocd/openocd.sh flash /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
### Flashing Target ###
Open On-Chip Debugger 0.10.0+dev-01383-gd46f28c2e-dirty (2020-08-20-10:53)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
hla_swd
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
srst_only separate srst_nogate srst_open_drain connect_assert_srst

Info : clock speed 500 kHz
Info : STLINK V2J31M21 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.245293
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32l4x.cpu on 0
Info : Listening on port 42155 for gdb connections
    TargetName         Type       Endian TapName            State       
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32l4x.cpu       hla_target little stm32l4x.cpu       reset

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x08000738 msp: 0x20000200
Info : device idcode = 0x10006464 (STM32L41/L42xx - Rev: A)
Info : flash size = 128kbytes
Info : flash mode : single-bank
Warn : Adding extra erase range, 0x08002388 .. 0x080027ff
auto erase enabled
wrote 9096 bytes from file /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf in 0.611736s (14.521 KiB/s)

verified 9096 bytes in 0.427522s (20.777 KiB/s)

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
shutdown command invoked
Done flashing
/work/riot/RIOT/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200"  
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2020-09-23 11:38:00,375 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2020-09-23 11:38:10,650 # main(): This is RIOT! (Version: 2020.10-devel-1448-g2c3a2-pr/cpu/stm32l4_mco)
2020-09-23 11:38:10,651 # Hello World!
2020-09-23 11:38:10,656 # You are running RIOT on a(n) nucleo-l412kb board.
2020-09-23 11:38:10,659 # This board features a(n) stm32 MCU.
2020-09-23 11:38:35,794 # Exiting Pyterm
MCO: SYSCLK + HSI used as SYSCLK + prescaler 8 => expected frequency is 2MHz

image

$ CFLAGS="-DCONFIG_USE_CLOCK_HSI=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_SYSCLK=1 -DCONFIG_CLOCK_MCO_PRE=8" BUILD_IN_DOCKER=1  make BOARD=nucleo-l412kb -C examples/hello-world flash term --no-print-directory 
Launching build container using image "riot/riotbuild:latest".
docker run --rm --tty --user $(id -u) -v '/usr/share/zoneinfo/Europe/Paris:/etc/localtime:ro' -v '/work/riot/RIOT:/data/riotbuild/riotbase:delegated' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'      -e 'BOARD=nucleo-l412kb' -e 'CFLAGS=-DCONFIG_USE_CLOCK_HSI=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_SYSCLK=1 -DCONFIG_CLOCK_MCO_PRE=8'  -w '/data/riotbuild/riotbase/examples/hello-world/' 'riot/riotbuild:latest' make 'BOARD=nucleo-l412kb'    
Building application "hello-world" for "nucleo-l412kb" with MCU "stm32".

"make" -C /data/riotbuild/riotbase/boards/nucleo-l412kb
"make" -C /data/riotbuild/riotbase/boards/common/nucleo
"make" -C /data/riotbuild/riotbase/core
"make" -C /data/riotbuild/riotbase/cpu/stm32
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/bootloader
"make" -C /data/riotbuild/riotbase/cpu/stm32/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/stmclk
"make" -C /data/riotbuild/riotbase/cpu/stm32/vectors
"make" -C /data/riotbuild/riotbase/drivers
"make" -C /data/riotbuild/riotbase/drivers/periph_common
"make" -C /data/riotbuild/riotbase/sys
"make" -C /data/riotbuild/riotbase/sys/auto_init
"make" -C /data/riotbuild/riotbase/sys/newlib_syscalls_default
"make" -C /data/riotbuild/riotbase/sys/pm_layered
"make" -C /data/riotbuild/riotbase/sys/stdio_uart
   text	   data	    bss	    dec	    hex	filename
   8856	    112	   2312	  11280	   2c10	/data/riotbuild/riotbase/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
/work/riot/RIOT/dist/tools/openocd/openocd.sh flash /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
### Flashing Target ###
Open On-Chip Debugger 0.10.0+dev-01383-gd46f28c2e-dirty (2020-08-20-10:53)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
hla_swd
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
srst_only separate srst_nogate srst_open_drain connect_assert_srst

Info : clock speed 500 kHz
Info : STLINK V2J31M21 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.246873
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32l4x.cpu on 0
Info : Listening on port 35597 for gdb connections
    TargetName         Type       Endian TapName            State       
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32l4x.cpu       hla_target little stm32l4x.cpu       reset

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x08000738 msp: 0x20000200
Info : device idcode = 0x10006464 (STM32L41/L42xx - Rev: A)
Info : flash size = 128kbytes
Info : flash mode : single-bank
Warn : Adding extra erase range, 0x08002308 .. 0x080027ff
auto erase enabled
wrote 8968 bytes from file /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf in 0.616214s (14.212 KiB/s)

verified 8968 bytes in 0.441714s (19.827 KiB/s)

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
shutdown command invoked
Done flashing
/work/riot/RIOT/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200"  
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2020-09-23 11:39:43,276 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2020-09-23 11:39:45,072 # main(): This is RIOT! (Version: 2020.10-devel-1448-g2c3a2-pr/cpu/stm32l4_mco)
2020-09-23 11:39:45,073 # Hello World!
2020-09-23 11:39:45,078 # You are running RIOT on a(n) nucleo-l412kb board.
2020-09-23 11:39:45,081 # This board features a(n) stm32 MCU.
2020-09-23 11:39:46,460 # Exiting Pyterm
MCO: SYSCLK + PLL used as SYSCLK (80MHz) + prescaler 8 => expected frequency is 10MHz

image

$ CFLAGS="-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_SYSCLK=1 -DCONFIG_CLOCK_MCO_PRE=8" BUILD_IN_DOCKER=1  make BOARD=nucleo-l412kb -C examples/hello-world flash term --no-print-directory 
Launching build container using image "riot/riotbuild:latest".
docker run --rm --tty --user $(id -u) -v '/usr/share/zoneinfo/Europe/Paris:/etc/localtime:ro' -v '/work/riot/RIOT:/data/riotbuild/riotbase:delegated' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'      -e 'BOARD=nucleo-l412kb' -e 'CFLAGS=-DCONFIG_USE_CLOCK_PLL=1 -DCONFIG_CLOCK_ENABLE_MCO=1 -DCONFIG_CLOCK_MCO_USE_SYSCLK=1 -DCONFIG_CLOCK_MCO_PRE=8'  -w '/data/riotbuild/riotbase/examples/hello-world/' 'riot/riotbuild:latest' make 'BOARD=nucleo-l412kb'    
Building application "hello-world" for "nucleo-l412kb" with MCU "stm32".

"make" -C /data/riotbuild/riotbase/boards/nucleo-l412kb
"make" -C /data/riotbuild/riotbase/boards/common/nucleo
"make" -C /data/riotbuild/riotbase/core
"make" -C /data/riotbuild/riotbase/cpu/stm32
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common
"make" -C /data/riotbuild/riotbase/cpu/cortexm_common/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/bootloader
"make" -C /data/riotbuild/riotbase/cpu/stm32/periph
"make" -C /data/riotbuild/riotbase/cpu/stm32/stmclk
"make" -C /data/riotbuild/riotbase/cpu/stm32/vectors
"make" -C /data/riotbuild/riotbase/drivers
"make" -C /data/riotbuild/riotbase/drivers/periph_common
"make" -C /data/riotbuild/riotbase/sys
"make" -C /data/riotbuild/riotbase/sys/auto_init
"make" -C /data/riotbuild/riotbase/sys/newlib_syscalls_default
"make" -C /data/riotbuild/riotbase/sys/pm_layered
"make" -C /data/riotbuild/riotbase/sys/stdio_uart
   text	   data	    bss	    dec	    hex	filename
   9048	    112	   2312	  11472	   2cd0	/data/riotbuild/riotbase/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
/work/riot/RIOT/dist/tools/openocd/openocd.sh flash /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf
### Flashing Target ###
Open On-Chip Debugger 0.10.0+dev-01383-gd46f28c2e-dirty (2020-08-20-10:53)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
hla_swd
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
srst_only separate srst_nogate srst_open_drain connect_assert_srst

Info : clock speed 500 kHz
Info : STLINK V2J31M21 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.245293
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32l4x.cpu on 0
Info : Listening on port 42717 for gdb connections
    TargetName         Type       Endian TapName            State       
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32l4x.cpu       hla_target little stm32l4x.cpu       reset

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x08000738 msp: 0x20000200
Info : device idcode = 0x10006464 (STM32L41/L42xx - Rev: A)
Info : flash size = 128kbytes
Info : flash mode : single-bank
Warn : Adding extra erase range, 0x080023c8 .. 0x080027ff
auto erase enabled
wrote 9160 bytes from file /work/riot/RIOT/examples/hello-world/bin/nucleo-l412kb/hello-world.elf in 0.629058s (14.220 KiB/s)

verified 9160 bytes in 0.441952s (20.240 KiB/s)

Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
shutdown command invoked
Done flashing
/work/riot/RIOT/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200"  
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2020-09-23 11:40:56,599 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.
2020-09-23 11:40:57,605 # �in(): This is RIOT! (Version: 2020.10-devel-1448-g2c3a2-pr/cpu/stm32l4_mco)
2020-09-23 11:40:57,606 # Hello World!
2020-09-23 11:40:57,607 # You are running RIOT on a(n) nucleo-l412kb board.
2020-09-23 11:40:57,608 # This board features a(n) stm32 MCU.
2020-09-23 11:40:58,725 # Exiting Pyterm

Issues/PRs references

This PR is based on #15036 and ticks one item in #14975

@aabadie aabadie added Type: enhancement The issue suggests enhanceable parts / The PR enhances parts of the codebase / documentation CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Area: cpu Area: CPU/MCU ports labels Sep 23, 2020
@aabadie aabadie added the State: waiting for other PR State: The PR requires another PR to be merged first label Sep 24, 2020
@aabadie aabadie removed the State: waiting for other PR State: The PR requires another PR to be merged first label Oct 20, 2020
@aabadie aabadie force-pushed the pr/cpu/stm32l4_mco branch 2 times, most recently from c82e3a8 to 981f83e Compare October 21, 2020 14:49
Copy link
Contributor

@fjmolinas fjmolinas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: cpu Area: CPU/MCU ports CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Type: enhancement The issue suggests enhanceable parts / The PR enhances parts of the codebase / documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants