本帖最后由 wolfgang2015 于 2018-5-17 22:51 编辑 ( l7 C3 K+ \# y- t 0 L( h z: ]6 \, U, Y n+ L& { 在线培训上用的是 IAR 环境搭建的FreeRTOS环境,我看论坛里对STM32新出的Atollic TrueStudio For STM32的工具使用者不是很多,借此机会把TrueStudio工具搭建STM32的方法介绍一下:7 ^) g* f8 t3 x% Y 安装过程略,Atollic官网下载安装程序,下一步下一步就能安装成功。. s5 |& { n+ ?0 h 1、安装好 TrueStudio 后,运行 TrueStudio , 在菜单栏中选择"New--->C Project"新建项目( Y, b/ h5 Y/ n, [ 2 [) }7 T0 x v7 A1 q 8 x; M2 t' g+ @* F Q, X* p3 B& v- P 2、选择一个嵌入式C项目,并配置为Atollic ARM Tools ( Y- @' _. ?+ g4 r8 g# x 3、选择一个MCU 型号,并选择浮点、浮点单元、代码为之、指令集等参数。 手边的开发板是这次在线活培训活动提供的 Nucleo-L496ZG,1 \2 d& u+ J" a. @. o/ b, i 在硬件配置窗口的L4系列MCU下选择STM32L496ZG,(这里工具中没有提供Nucleo-L496ZG的板卡选择,但选择MCU一样能实现本实验) 4、接下来选择项目编译和链接时所用的环境参数。 这里要修改默认值,按下图选择“新库”,勾选“生成系统调用文件”的选项,并选择“动态堆大小(缺省)”。其他的默认1 b9 J3 Q+ X' i( v- U 8 ]# O3 u" _2 }: j# i0 e- W0 b |% ?5 K3 ]+ f 5、选择一个合适的下载调试工具,这里Nucleo-L496ZG开发板上具备ST-LINK,所以选择“ST-LINK”0 P! i2 v- y& T/ T/ u A ' |& C# {) }; b: r- m 9 m; x$ {4 B, s6 f1 W8 d" S; l 6、最后Finish后,工程项目就生成了。 7、观察生成的工程项目,这里只有基本的框架,MCU的底层驱动、第三方工具以及包括驱动的芯片初始化代码等都未加入。 需要人工进行填补。 1)MCU的底层驱动 可以从CubeMX的驱动库中获取,我这里选用L4 V1.11.0的最新库,拷贝HAL_Driver目录下的inc和src文件夹即可,驱动文件中的样例文件 *_template.h 以及 *_template.c文件直接修改后缀名 *.h_back、*.c_back即可,否则会干扰正常的程序编译。 BSP可根据需要选择要或不要,CMSIS在建立项目时已配置好,不用再添加 2) FreeROTS 从官网下载或从官网的SVN下载:http://svn.code.sf.net/p/freertos/code/ 下载tags目录的9.0源码或者 10.0.1的源码均可 cmsis_os.c/cmsis_os.h 的文件,从CubeMX的驱动库中获取(STM32Cube_FW_L4_V1.11.0\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS) 在项目中新建一个目录FreeRTOS,将下列文件按此目录结构加到新建的FreeRTOS目录下: 0 x' K" z, A% G" R 8、最后在项目右键--〉Properties 中, C/C++ Gennerl ---->Paths ans symbols 中,重新定义Includes文件以及 Source Location即可 4 f5 M% Q3 ~8 ~8 ?3 a, a- Q- L& ]7 y, U 9、项目生成后main.c中 的相关配置可自行添加,不熟悉的参考CubeMX 的生成代码,将以下代码代入到项目中 inc\stm32L4xx_it.h inc\stm32L4xx_hal_conf.h inc\FreeRtosConfig.h inc\main.h src\freertos.c src\stm32l4xx_hal_msp.c src\stm32L4xx_hal_timebase_TIM.c src\stm32L4xx_it.c 6 O* `, v, c+ E; K5 d$ E" v引入到系统中,main.c可以靠插入相关函数 这里要说的是,培训建议我们使用原生态的FreeRTOS,在理解 cmsis_os.c/cmsis_os.h 的文件基础上,尽可能的江os_xxxxx函数,替换为x_XXXX的函数或vxxxxx的函数 % R8 X+ T2 W) Z$ F将Main.c文件中的代码
替换为
* G, Y: d! I2 e* [. f/ `/ R( Y 在vStartLedTask 任务中添加相应的操作函数
LED函数的相关配置,可参考前面无系统时相关设定 B( Q0 T- F" o6 ~! z* n 补充一下:) I7 J/ }; f5 T4 Y2 [1 I/ w 在stm32l4xx_it.c 文件中 SysTick_Handler() 函数,使用了 osSystickHandler(); 可借此了解 cmsis_os.c/cmsis_os.h 如何调用 原生函数的,可作为学习参考。 7 V& K4 ^6 f3 Y' T7 r" U ; T) D) P7 s7 K% w0 a 试验照片: LED2灯亮起: Task延迟500ms 相关文档: 《低功耗MCU运行FreeRTOS》培课程的准备内容(一) 《低功耗MCU运行FreeRTOS》培课程回顾(二)' d2 m& {, q2 ?$ s; e 《低功耗MCU运行FreeRTOS》培训课程(四) 创建任务 《低功耗MCU运行FreeRTOS》培训课程(五)信号量实现人机交互/ Z+ @! V- M" B! j# `$ Q+ T8 ^ 《低功耗MCU运行FreeRTOS》培训课程(六)消息队列的使用 |
CubeMX只是提供一个入门的基础配置,! _+ Y5 F9 V7 h( s" `+ N' ]
第三方移植不能仅靠一个工具,如果你需要用FreeRTOS 10.0的时候咋办?
谢谢楼主
8 G2 ], Q0 N$ D3 y7 \
cubeMx只是个图形化初始化工具,帮你搭建个工程模板。+ Q6 T4 _, v5 l+ z/ c4 e
应用代码得你自己写,还需要编译调试工具啊,TrueStudio就是这个工具。