FreeRTOS系统移植教程_按照 rtos 移植文档页面

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

4、打开MDK工程,新建FREERTOS分组并将源文件添加进分组如下图所示。在这里需要注意的是portable目录里的文件是跟平台相关的,我们添加进portable\RVDS\ARM_CM3\port.c,在portable目录里还有一个MemMang文件夹,里面主要是跟内存管理相关的,在这里我们选用heap_4.c。

5、添加头文件如下图所示

6、经过上面的步骤后可以开始编译了,编译结果如下图所示,从编译结果看是缺少了 "FreeRTOSConfig.h"头文件,从文件名称里可以看出这个头文件里的内容主要是一些配置信息,但从刚刚复制的Source的源码里并没有找到该头文件,在这里我们可以从FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_STM32F103_Keil里把FreeRTOSConfig.h拷贝到我们工程的FREERTOS\include里,然后重新编译,发现编译通过了。

7、开始写我们的main.c,这里可以参考以下LED灯代码,之后进行编译然后烧录进stm32单片机里,发现LED灯并没有闪烁。

#include "stm32f10x.h"
#include <stdio.h>
#include "FreeRTOS.h"
#include "task.h"
 /********************************************************
  函数名:void LED_Init(void)
  功能描述:灯端口初始化
  被调用函数清单:
  调用本函数清单:
  被访问的表:
  被修改的表:
  输入参数:
  输出参数:
  返回值:
  其它说明:
********************************************************/
void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);	 //使能PE端口时钟
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				 //LED-->PE.5 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOE, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz
 GPIO_SetBits(GPIOE,GPIO_Pin_5); 						 //PE.5 输出高 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;	    		 //LED-->PE.5 端口配置, 推挽输出
}
/********************************************************
  函数名:void vTaskLED(void * pvParameters)
  功能描述:灯闪烁
  被调用函数清单:
  调用本函数清单:
  被访问的表:
  被修改的表:
  输入参数:void * pvParameters =NULL
  输出参数:
  返回值:
  其它说明:
********************************************************/
void vTaskLED(void * pvParameters)
{ 
	portTickType xLastWakeTime; 
	
	xLastWakeTime = xTaskGetTickCount(); 
	while(1)
	{
		GPIOE->ODR ^= GPIO_Pin_5;
		vTaskDelayUntil( &xLastWakeTime, ( 250 / portTICK_RATE_MS ) ); 
  }
} 

/********************************************************
  函数名:int main( void )
  功能描述:主函数
  被调用函数清单:
  调用本函数清单:
  被访问的表:
  被修改的表:
  输入参数:
  输出参数:
  返回值:
  其它说明:
********************************************************/
int main( void ) 
{ 
	/*串口初始化*/


![img](https://img-blog.csdnimg.cn/img_convert/9fdf3de15e013d918a55129dcb96c3c3.png)
![img](https://img-blog.csdnimg.cn/img_convert/3a29b79a40695a631097cfaf9cdbfcde.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值