You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
..
qk
qv
qv-ms
qv-ms-tt
README.md
real-time_trace.png
stm32-nucleo-64_conn.png
stm32-nucleo-c031c6.webp

README.md

NOTE This file is best viewed in a markdown viewer, such as the one built into GitHub. Markdown viewers are also available as plug-ins to popular Internet browsers.

Real-Time Example on NUCLEO-C031C6

This example implements the "Periodic-Sporadic" application on the STM32 NUCLEO-C031C6 board (ARM Cortex-M0+). The example demonstrates various real-time preemption scenarios among active objects in the QK and QV kernels. The example requires a logic analyzer.


STM32 NUCLEO-C031C6


Logic analyzer trace after pressing the button (QK kernel)

Code Organization

examples\arm-cm\real-time_nucleo-c031c6
|
+---qk             // preemptive QK kernel
|   +---armclang   // ARM/KEIL MDK with Compiler 6 (ARM/CLANG)
|   |       rt-qk.uvprojx // uVision project
|
+---qv             // cooperative QV kernel
|   +---armclang   // ARM/KEIL MDK with Compiler 6 (ARM/CLANG)
|   |       rt-qv.uvprojx // uVision project
|
+---qv-ms          // cooperative QV kernel (multi-stage threads)
|   +---armclang   // ARM/KEIL MDK with Compiler 6 (ARM/CLANG)
|   |       rt-qv-ms.uvprojx // uVision project
|
+---qv-tt          // cooperative QV kernel (time-triggered)
|   +---armclang   // ARM/KEIL MDK with Compiler 6 (ARM/CLANG)
|   |       rt-qv-tt.uvprojx // uVision project

Features Demonstrated

The example QP application consists of 2 periodic threads (Active Objects) and two sporadic, long-running threads (Active Objects). Additionally, the Time-Triggered (TT) version has a tt-scheduler thread.

  • directory qk: preemptive run-to-completion QK kernel

  • directory qv: cooperative run-to-completion QV kernel with the same threads as QK

  • directory qv-ms: cooperative run-to-completion QV kernel with multi-stage threads

  • directory qv-tt: cooperative run-to-completion QV kernel with time-triggered threads

Building the Examples

ARM/KEIL MDK

  • Open one of the provided KEIL uVision projects (e.g., rt-qk.uvprojx) in Keil uVision IDE. Build/Debug/Download to the board from the IDE.

Running the Examples

Setting up a Logic Analyzer

The NUCLEO-C031C6 needs to be conntected to a logic analyzer as shown in the picture below.


Connecting STM32 NUCLEO-C031C6 to a logic analyzer

The logic analyzer needs to be configured as follows:

  • sampling rate: several MHz (e.g., 24MHz)
  • trigger: Sporadic (PC.13 on the NUCLEO-C031C6), falling edge
  • pre-trigger capture ratio: 10%