STM32CubeMX+micro_ros_stm32cubemx_utils库
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.(这里说的project folder是因为平时STM32CubeMX所有的项目都是位于一个文件夹内的,例如我的位于文件夹 stm32_ws内,图片中我的project folder就是stm32_ws,而图片中stm32f103c8t6是我的一个项目,stm32f407是另外一个项目,其他项目都会在这个stm32_ws内) 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文件)under?Project 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 the?build 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,我就是执行了那个文件夹里面的sh文件。但是可以从后边这个代码看出来,需要在命令中传递一个参数进去,那就是MICROROS_LIBRARY_FOLDER,要在命令行中传递这个参数的值,否则会异常,或者也可以修改sh文件,给文件里面的MICROROS_LIBRARY_FOLDER赋值,也就是类似于这样) -
可以看到在sh文件中是使用了一个bash变量$MICROROS_LIBRARY_FOLDER,所以应该是这样:
export MICROROS_LIBRARY_FOLDER=静态库文件夹的地址
-
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 in?sample_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
?under?NVIC Settings
:?Detail
U(S)ART with Interrupts(中断方式串口通讯)
Steps to configure:
- Enable U(S)ART in your STM32CubeMX
- For the selected USART, enable?
global interrupt
?under?NVIC 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 the?Middleware -> USB_DEVICE
?configuration.Note: The micro-ROS transport will override the autogenerated?
USB_DEVICE/App/usbd_cdc_if.c
?methods.
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!