五、修改官方FreeRTOS例程(STM32F1)

1、官方源码下载

(1)进入FreeRTOS官网:FreeRTOS官网

(2)下载FreeRTOS。(选择带示例的下载)

五、修改官方FreeRTOS例程(STM32F1)_第1张图片

2、删减目录

(1)下载后解压的FreeRTOS文件如下图所示。

五、修改官方FreeRTOS例程(STM32F1)_第2张图片

(2)删除下图中红框勾选的文件。

  • FreeRTOS-Plus,FreeRTOS的生态文件,非必需的。
  • tools,这里面是亚马逊相关的文件,不需要。

五、修改官方FreeRTOS例程(STM32F1)_第3张图片

(3)删除"FreeRTOSv202212.01\FreeRTOS\Demo"目录下用不到的示例工程。

  • 保留Common文件夹
  • 保留CORTEX_STM32F103_Keil

五、修改官方FreeRTOS例程(STM32F1)_第4张图片

(4) "FreeRTOSv202212.01\FreeRTOS\Source\portable"目录下只保留如下两个文件夹,其他全部删掉。

五、修改官方FreeRTOS例程(STM32F1)_第5张图片

(5)"FreeRTOSv202212.01\FreeRTOS\Source\portable\RVDS"目录下只保留ARM_CM3文件。

3、编译工程

(1)打开工程。

五、修改官方FreeRTOS例程(STM32F1)_第6张图片

(2)弹出如下对话框,说明该工程是用KeilMDK4创建的。点击“Migrate to Device Pack”更新为KeilMDK5。

五、修改官方FreeRTOS例程(STM32F1)_第7张图片

(3)编译结果如下。

五、修改官方FreeRTOS例程(STM32F1)_第8张图片

(4)编译后报错106,明显不正常。该程序原本是Keil4MDK中编写的,更新为KeilMDK5出现的问题。理论上官方提供的例程是0错误,0警告的。

4、编译错误解决

(1)KeilMDK4中使用的编译器是"Missing: Compiler Version 5",而KeilMDK5中该编译器默认是不安装的。解决思路就是安装该编译器在编译试试。(ARM Comliler是ARM编译器的意思)

五、修改官方FreeRTOS例程(STM32F1)_第9张图片

(2)安装V5编译器。

KeilMDK V5编译器的安装_朱嘉鼎的博客-CSDN博客

(3)安装后编译结果如下。

五、修改官方FreeRTOS例程(STM32F1)_第10张图片

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、软仿真查看实验现象

五、修改官方FreeRTOS例程(STM32F1)_第11张图片

6、完整工程下载地址

(1)完整工程存储在码云。

(2)https://gitee.com/zhujiading/free-rtos-csdn

五、修改官方FreeRTOS例程(STM32F1)_第12张图片

 

你可能感兴趣的:(FreeRTOS,stm32,嵌入式硬件,单片机)