当前位置:   article > 正文

FreeRTOS移植到标准库_标准库移植freertos

标准库移植freertos

源码下载

1:从官网获取freeRTOS源码

freeRTOS官网

2:FreeRtos源码文件阐述

3:移植FreeRtos源码

FreeRTOS移植步骤
1:添加FreeRTOS源码,将FreeRTOS源码添加到基础工程,头文件等路径
2:添加FreeRTOSConfig.h文件,添加FreeRTOSConfig.h配置文件
3:修改SYSTEM文件夹,主要包含sys,delay,和usart
4:修改中断相关文件, 修改Systick中断,SVC中断,PendSV中断
5:添加应用程序,验证移植是否成功

1 -> 在基础例程中创建一个freeRTOS文件夹,该文件夹包含三个子文件夹,分别是ins,src,port分别用于存放freeRTOS的c语言文件,头文件和RTOS的内存操作文件。

在例程src文件夹复制粘贴源码目录下的c语言文件

src文件夹粘贴后的结果展示

 在例程inc文件中复制粘贴源码中的头文件,该文件包含在源码中的include文件夹中

粘贴后的结果展示

后面还有两个文件夹一个是FreeRTOS的内存管理文件在\FreeRTOS\Source\portable\MemMang路径下共有5个,我们使用到的主要是heap_4.c文件,一个是FreeRTOS的RVDS文件夹里面包含的是不同芯片的移植文件我们F103C8T6选择的是ARM_CM3下的两个c文件,把heap_4.c文件和ARM_CM3下的文件复制到我们移植例程的port文件夹中

 

 复制后结果展示

2 -> 在freeRTOS这个文件夹路径下添加FreeRTOS的配置文件

 FreeRTOS问价夹的路径是\FreeRTOS\Demo\CORTEX_STM32F103_Keil

 

3 -> 打开项目例程将文件的路径添加进去(这个组文件是我们自己创建的)

 把组文件中包含的子文件全部添加到keil的工程目录中去

4:配置FreeRTOSConfig

在FreeRTOSConfig文件中把这三行配置文件添加进去

#define xPortPendSVHandler  PendSV_Handler
#define vPortSVCHandler     SVC_Handler
#define xPortSysTickHandler SysTick_Handler

打开stm32f10x_it.c源文件注释掉以下三行代码

测试main.c文件中编写测试用例(暂时还不需要知道这个代码表示的是什么意思仅用于测试)

  1. #include "stm32f10x.h" // Device header
  2. #include "Delay.h"
  3. #include "OLED.h"
  4. #include "freeRTOS.h"
  5. #include "task.h"
  6. TaskHandle_t myTaskHandler;
  7. void myTask(void * arg){
  8. while(1){
  9. GPIO_ResetBits(GPIOA, GPIO_Pin_1);
  10. vTaskDelay(500);
  11. GPIO_SetBits(GPIOA, GPIO_Pin_1);
  12. vTaskDelay(500);
  13. }
  14. }
  15. int main(void)
  16. {
  17. /*开启时钟*/
  18. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟
  19. /*GPIO初始化*/
  20. GPIO_InitTypeDef GPIO_InitStructure;
  21. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  22. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
  23. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  24. GPIO_Init(GPIOA, &GPIO_InitStructure); //将PA1和PA2引脚初始化为推挽输出
  25. /*设置GPIO初始化后的默认电平*/
  26. GPIO_SetBits(GPIOA, GPIO_Pin_1); //设置PA1和PA2引脚为低电平
  27. xTaskCreate(myTask,"myTask",512,NULL,2,&myTaskHandler);
  28. vTaskStartScheduler();
  29. while(1){
  30. }
  31. }

编译

使用st-link将程序下载到F103最下系统班上查看结果:有实验现象FreeRTOS移植成功


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/730290
推荐阅读
相关标签
  

闽ICP备14008679号