How jabed-akhtar/canopenstm32_ works
CANopenNode_STM32 is an STM32 port and demo application for CANopen, supporting CAN/FDCAN hardware and both bare-metal and FreeRTOS examples. The documented primary workflow initializes the CANopen application, services it from a main loop or task, and handles timer interrupts; CAN messages enter through the controller’s interrupt-driven driver. The tree contains no CANopenNode protocol-stack sources, so protocol stages such as PDO, SDO, and NMT are not expanded into implementation nodes. Relationships for unsampled modern modules are limited to documented behavior.
Main entry points: Src/main.c FreeRTOS demo · CO_app_STM32.c CANopen app API · Src/main.c Bare-metal demo · CO_driver_STM32.c STM32 CAN driver
Components 16
Application
- CANopen app API
CANopenNode_STM32/CO_app_STM32.c - Object dictionary
CANopenNode_STM32/OD.c - Blank storage
CANopenNode_STM32/CO_storageBlank.c
STM32 Port
- STM32 CAN driver
CANopenNode_STM32/CO_driver_STM32.c - Target definitions
CANopenNode_STM32/CO_driver_target.h
Legacy Demos
- Bare-metal demo
legacy/stm32h7xx_fdcan/Src/main.c - FreeRTOS demo
legacy/stm32h7xx_fdcan_rtos/Src/main.c - Legacy CAN driver
legacy/source/CO_driver_stm32h735g-dk.c - Legacy dictionary
legacy/source/OD.c - Debug communication
legacy/source/comm_stm32h735g-dk.c
Board Platform
- CMSIS-RTOS2 adapter
legacy/libs/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c - FreeRTOS kernel
legacy/libs/FreeRTOS/Source/tasks.c - STM32 HAL
legacy/drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal.h - HAL timer
legacy/drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c
Other components
- Application integrator
- CAN network
Connections 16
- Application integrator → CANopen app API: configures and runs
- CANopen app API → STM32 CAN driver: uses CAN interface
- CANopen app API → Object dictionary: uses dictionary
- CANopen app API → Blank storage: optional storage
- CAN network → STM32 CAN driver: sends CAN frames
- STM32 CAN driver → CAN network: receives CAN frames
- Bare-metal demo → Legacy dictionary: uses dictionary
legacy/stm32h7xx_fdcan/Src/main.c - Bare-metal demo → Debug communication: logs status
legacy/stm32h7xx_fdcan/Src/main.c - FreeRTOS demo → Legacy dictionary: uses dictionary
legacy/stm32h7xx_fdcan_rtos/Src/main.c - FreeRTOS demo → Debug communication: logs status
legacy/stm32h7xx_fdcan_rtos/Src/main.c - FreeRTOS demo → CMSIS-RTOS2 adapter: creates threads
legacy/stm32h7xx_fdcan_rtos/Src/main.c - CMSIS-RTOS2 adapter → FreeRTOS kernel: adapts calls
legacy/libs/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c - Legacy CAN driver → STM32 HAL: uses HAL
legacy/source/CO_driver_stm32h735g-dk.c - Bare-metal demo → Legacy CAN driver: initializes CAN
- FreeRTOS demo → Legacy CAN driver: initializes CAN
- HAL timer → STM32 HAL: implements timer HAL
legacy/drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c