最近为实现小应用囤了一点尚属低价的STM32F030C8T6单片机,自制了最小系统板,也就顺带捣鼓在这种小芯片上如何移植FreeRTOS。其实由于这款单片机SRAM容量太小,再上FreeRTOS有点不划算了,但这个移植的过程却对入门FreeRTOS很有帮助。
工具链:Keil MDK 5.34 + STM32CubeMX 6.3.0 + 自制最小系统板(如图)
一、配置管脚+生成代码
打开Keil,选择单片机(我这里就选STM32F030C8T6),接着在Manage Run-Time Environment中选择软件组件,选中CMSIS->CORE、Device->STM32CubeHAL、Device->Startup以及下面STM32Cube Framework (API)里的STM32CubeMX。注意,不要马上点击确定!!!
我们先要点STM32CubeMX旁边的绿色启动按钮,启动CubeMX配置。CubeMX要从意法半导体官网下载安装。
作为一个简单的例子,我们可以只配置最少的管脚,并且只用片内振荡器。我在PC13上挂了一个LED,将该管脚配置为GPIO_Output,然后启用USART1,配置为异步(UART)模式,波特率115200Bits/s。默认条件下,PA9被设置为TX,PA10为RX。
(配置GPIO和UART)
接着我们用STM32CubeMX生成FreeRTOS的代码。左侧目录中点开Middleware,就有FreeRTOS,点中它,接口(Interface)选择CMSIS_V2。在下面设置参数中内存管理里,设置总堆大小(TOTAL_HEAP_SIZE)为2048字节,内存管理方法(Memory Management scheme)为heap_1。