网页设计好的网站sem培训学校
GitHub - micro-ROS/micro_ros_stm32cubemx_utils at humble
这个就是下载这个代码库以后的文件结构。其中sample_project.ioc就是平时STM32CubeMX的工程文件。类似于visual studio里面的项目文件 。打开以后是这个样子的:
可以看到跟本文后面的那些配置是几乎一模一样,就是说这个包里面包含了STM32CubeMX工程文件了
Using this package with STM32CubeMX
-
Clone this repository in your STM32CubeMX project folder. A sample project can be generated with the provided
sample_project.ioc
. -
Make sure that your STM32CubeMX project is using a
Makefile
toolchain (toolchain指交叉编译器,我觉得就是跨平台编译的东西例如cmake,这里选择使用makefile交叉编译器系统,这个代码库下载后也可以看到有mkefile文件,应该用于交叉编译的,有意思的是:CMakelists.txt最后也是生成了makefile文件)underProject Manager -> Project
-
Make sure that if you are using FreeRTOS, the micro-ROS task has more than 10 kB of stack:
-
Configure the transport interface on the STM32CubeMX project, check the Transport configuration section for instructions on the custom transports provided.在STM32CubeMX内设置串口
-
Modify the generated
Makefile
to include the following code before thebuild the application
section:修改makefile文件,在build the application之前添加后面这个代码####################################### # micro-ROS addons ####################################### LDFLAGS += micro_ros_stm32cubemx_utils/microros_static_library/libmicroros/libmicroros.a C_INCLUDES += -Imicro_ros_stm32cubemx_utils/microros_static_library/libmicroros/microros_include# Add micro-ROS utils C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/custom_memory_manager.c C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_allocators.c C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_time.c# Set here the custom transport implementation C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_transports/dma_transport.c #注意看这里添加的是DMA传输方式文件,所以前面应该配置的是DMA传输方式,如果使用的是中断方式就不知道添加哪个文件了也许大概是包含IT_transport.c这样的一个文件吧print_cflags:@echo $(CFLAGS)
-
Execute the static library generation tool. 编译Compiler flags will retrieved automatically from your
Makefile
and user will be prompted to check if they are correct.docker pull microros/micro_ros_static_library_builder:humble(这里遇到permission denied,所以需要先切换到超级用户在控制台输入su,然后再执行这个命令就可以了)docker run -it --rm -v $(pwd):/project --env MICROROS_LIBRARY_FOLDER=micro_ros_stm32cubemx_utils/microros_static_library microros/micro_ros_static_library_builder:humble
-
Modify your
main.c
to use micro-ROS.(在开发文件cpp文件中根据需要使用micro-ros内容) An example application can be found insample_main.c
. -
Continue your usual workflow building your project and flashing the binary:
make -j$(nproc)
Transport configuration(STM32与micro_ros支持的通讯方式)
Available transport for this platform are:
U(S)ART with DMA(DMA方式的串口通讯)
Steps to configure:
- Enable U(S)ART in your STM32CubeMX
- For the selected USART, enable DMA for Tx and Rx under
DMA Settings
- Set the DMA priotity to
Very High
for Tx and Rx - Set the DMA mode to
Circular
for Rx: Detail - For the selected, enable
global interrupt
underNVIC Settings
: Detail
U(S)ART with Interrupts(中断方式串口通讯)
Steps to configure:
- Enable U(S)ART in your STM32CubeMX
- For the selected USART, enable
global interrupt
underNVIC Settings
: Detail
USB CDC
Steps to configure:
-
Enable the USB in your STM32CubeMX
Connectivity
tab. -
Select the
Communication Device Class (Virtual Port Com)
mode on theMiddleware -> USB_DEVICE
configuration.Note: The micro-ROS transport will override the autogenerated
USB_DEVICE/App/usbd_cdc_if.c
methods.