1、官方源码下载
(1)进入FreeRTOS官网:FreeRTOS官网
(2)下载FreeRTOS。(选择带示例的下载)
2、删减目录
(1)下载后解压的FreeRTOS文件如下图所示。
(2)删除下图中红框勾选的文件。
- FreeRTOS-Plus,FreeRTOS的生态文件,非必需的。
- tools,这里面是亚马逊相关的文件,不需要。
(3)删除"FreeRTOSv202212.01\FreeRTOS\Demo"目录下用不到的示例工程。
- 保留Common文件夹
- 保留CORTEX_STM32F103_Keil
(4) "FreeRTOSv202212.01\FreeRTOS\Source\portable"目录下只保留如下两个文件夹,其他全部删掉。
(5)"FreeRTOSv202212.01\FreeRTOS\Source\portable\RVDS"目录下只保留ARM_CM3文件。
3、编译工程
(1)打开工程。
(2)弹出如下对话框,说明该工程是用KeilMDK4创建的。点击“Migrate to Device Pack”更新为KeilMDK5。
(3)编译结果如下。
(4)编译后报错106,明显不正常。该程序原本是Keil4MDK中编写的,更新为KeilMDK5出现的问题。理论上官方提供的例程是0错误,0警告的。
4、编译错误解决
(1)KeilMDK4中使用的编译器是"Missing: Compiler Version 5",而KeilMDK5中该编译器默认是不安装的。解决思路就是安装该编译器在编译试试。(ARM Comliler是ARM编译器的意思)
(2)安装V5编译器。
KeilMDK V5编译器的安装_朱嘉鼎的博客-CSDN博客
(3)安装后编译结果如下。
5、修改程序
5.1、实现目的
(1)示例程序原来因该是和LCD显示内容有关。
(2)创建2个任务,通过串口打印“1”和“2”。
5.2、重写fputc函数。
int fputc( int ch, FILE *f )
{
USART_TypeDef *USARTx = USART1;
while( (USARTx->SR & (1<<7)) == 0); // 等待上次的数据发送完成
USARTx->DR = ch;
return ch;
}
5.3、编写任务函数
/*任务1函数*/
void vTask1()
{
while(1)
{
printf("1");
}
}
/*任务2函数*/
void vTask2()
{
while(1)
{
printf("2");
}
}
5.3、main函数修改
(1)原main函数全部注释,重新编写。
(2)程序。
int main( void )
{
/*初始化串口:波特率,接收发送缓冲区长度*/
xSerialPortInitMinimal(115200, 20);
/*创建任务1*/
xTaskCreate(vTask1, "Task 1", 1000, NULL, 1, NULL);
/*创建任务2*/
xTaskCreate(vTask2, "Task 2", 1000, NULL, 1, NULL);
/*开启任务调度器*/
vTaskStartScheduler();
return 0;
}
5.4、软仿真查看实验现象
6、完整工程下载地址
(1)完整工程存储在码云。
(2)https://gitee.com/zhujiading/free-rtos-csdn
文章来源:https://www.toymoban.com/news/detail-667537.html
文章来源地址https://www.toymoban.com/news/detail-667537.html
到了这里,关于五、修改官方FreeRTOS例程(STM32F1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!