平台说明:
-
软件开发工具:STM32CubeIDE1.5
-
硬件开发板:NUCLEO-F767ZI
一,基本步骤:
- 根据项目需要使用STM32CubeIDE生成初始工程文件,生成后编译一下,主要是为了检验一下生成的工程的正确性.
- 根据MCU的类型复制ThreadX源代码和移值代码,STM32F767为cortex-m7内核,所以使用ports/cortex_m7目录中的移植文件.再复制_tx_initialize_low_level.s(此文件是我从官方示例中拷贝的,目前我知道是要修改MCU的频率和ThreadX系统基础时钟的)文件到我们的文件目录中.从这里下载:github.com/azure-rtos/…,微软提供的历程是可以直接使用的,但是代码结构不适合使用MX.
- Project配置中增加ThreadX头文件路径和源文件路径。Project Properties --> C/C++ Build --> Settings --> Tools Settings --> MCU GCC Compiler --> Include paths.
- 注释掉STM32CubeIDE默认代码stm32f7xx.c中的PendSV_Handler()和SysTick_Handler(),避免重复定义。为避免重新生成代码时注释被优化,将#if 0放置在DebugMon_Handler()的用户段0,将#endif放置在SysTick_Handler()的用户段1(这个可以在MX中NVIC-->Code Generation中取消默认生成的勾即可).
- 在 STM32F767ZITX_FLASH.ld 中的 .user_heap_stack 段定义__RAM_segment_used_end_,其表示未使用RAM空间的起始地址,用于做动态分配。
- 在 startup_stm32f767zitx.s 中定义全局变量 _vectors,其在 tx_initialize_low_level.S 中被调用.
- 最后我的工程文件结构:
后续将采用速度更快的STM32H743ZI来学习Threadx
补充
我将采用开发板上的LD1(绿灯),LD2(蓝灯),LD3(红灯)来指示.
网上找到的一些好的ThreadX相关文章链接:blog.csdn.net/qq_37555002:系列文章,详细地,系统地讲解.
记录:
- 2021/2/1:点灯成功(差点放弃);
- 2021/2/18:添加二,三,四项(计划);