码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • FreeRTOS移植


    目录

    FreeRTOS移植流程

     1 在基础工程 中 新建 FreeRTOS 文件夹 并且把源码添加到这文件夹

    ​编辑 2 在 portable 文件中保留keil MemMang 和 RVDS 其他删除

     ​编辑

     3 在基础工程 中新建 分组 FreeRTOS_Code 和 FreeRTOS_POPTABLE 并且添加 .c(源文件)添加h文件 路径

    把DOC移到最下面

     添加 FreeRTOS_CODE 内容

    添加文件路径

    4.从demo中复制FreeRTOSConfig.h文件

    ​编辑 5.移植SYSTEM文件,里面包括sys.c usart.c delay.c 

    初步认识简单的点灯框架


    FreeRTOS移植流程

    1. 1.在基础工程种新建Freertos文件夹,并且将源码添加到这个文件夹中。
    2. 2.在poertable文件夹中保留keil、MemMang 、和RVDS,其他删除
    3. 3.在基础工程中新建分组 FreeRTOS CODE 和 FreeRTOS PORTTABLE,并目
    4. 添加.c文件添加头文件h路径。
    5. 4.从demo中复制FreeRTOSConfig.h文件
    6. 5.移植SYSTEM文件,里面包括sys.c usart.c delay.c

     1 在基础工程 中 新建 FreeRTOS 文件夹 并且把源码添加到这文件夹

     2 在 portable 文件中保留keil MemMang 和 RVDS 其他删除

     

     

     3 在基础工程 中新建 分组 FreeRTOS_Code 和 FreeRTOS_POPTABLE 并且添加 .c(源文件)添加h文件 路径

    把DOC移到最下面

      

     添加 FreeRTOS_CODE 内容

     找到ARM内核相关的,stm32f103是Contex-M3内核

     hope1-4 都是内存管理办法 ,就是堆栈大小的一个方式

     

    添加文件路径

     

    4.从demo中复制FreeRTOSConfig.h文件

     5.移植SYSTEM文件,里面包括sys.c usart.c delay.c 

     

    初步认识简单的点灯框架

    代码

    1. #include "sys.h"
    2. #include "delay.h"
    3. #include "usart.h"
    4. #include "led.h"
    5. #include "FreeRTOS.h"
    6. #include "task.h"
    7. //ÈÎÎñÓÅÏȼ¶
    8. #define START_TASK_PRIO 1
    9. //ÈÎÎñ¶ÑÕ»´óС
    10. #define START_STK_SIZE 128
    11. //ÈÎÎñ¾ä±ú
    12. TaskHandle_t StartTask_Handler;
    13. //ÈÎÎñº¯Êý
    14. void start_task(void *pvParameters);
    15. //ÈÎÎñÓÅÏȼ¶
    16. #define LED0_TASK_PRIO 2
    17. //ÈÎÎñ¶ÑÕ»´óС
    18. #define LED0_STK_SIZE 50
    19. //ÈÎÎñ¾ä±ú
    20. TaskHandle_t LED0Task_Handler;
    21. //ÈÎÎñº¯Êý
    22. void led0_task(void *pvParameters);
    23. //ÈÎÎñÓÅÏȼ¶
    24. #define LED1_TASK_PRIO 3
    25. //ÈÎÎñ¶ÑÕ»´óС
    26. #define LED1_STK_SIZE 50
    27. //ÈÎÎñ¾ä±ú
    28. TaskHandle_t LED1Task_Handler;
    29. //ÈÎÎñº¯Êý
    30. void led1_task(void *pvParameters);
    31. int main(void)
    32. {
    33. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//ÉèÖÃϵͳÖжÏÓÅÏȼ¶·Ö×é4
    34. delay_init(); //ÑÓʱº¯Êý³õʼ»¯
    35. uart_init(115200); //³õʼ»¯´®¿Ú
    36. LED_Init(); //³õʼ»¯LED
    37. //´´½¨¿ªÊ¼ÈÎÎñ
    38. xTaskCreate((TaskFunction_t )start_task, //ÈÎÎñº¯Êý
    39. (const char* )"start_task", //ÈÎÎñÃû³Æ
    40. (uint16_t )START_STK_SIZE, //ÈÎÎñ¶ÑÕ»´óС
    41. (void* )NULL, //´«µÝ¸øÈÎÎñº¯ÊýµÄ²ÎÊý
    42. (UBaseType_t )START_TASK_PRIO, //ÈÎÎñÓÅÏȼ¶
    43. (TaskHandle_t* )&StartTask_Handler); //ÈÎÎñ¾ä±ú
    44. vTaskStartScheduler(); //¿ªÆôÈÎÎñµ÷¶È
    45. }
    46. //¿ªÊ¼ÈÎÎñÈÎÎñº¯Êý
    47. void start_task(void *pvParameters)
    48. {
    49. taskENTER_CRITICAL(); //½øÈëÁÙ½çÇø
    50. //´´½¨LED0ÈÎÎñ
    51. xTaskCreate((TaskFunction_t )led0_task,
    52. (const char* )"led0_task",
    53. (uint16_t )LED0_STK_SIZE,
    54. (void* )NULL,
    55. (UBaseType_t )LED0_TASK_PRIO,
    56. (TaskHandle_t* )&LED0Task_Handler);
    57. //´´½¨LED1ÈÎÎñ
    58. xTaskCreate((TaskFunction_t )led1_task,
    59. (const char* )"led1_task",
    60. (uint16_t )LED1_STK_SIZE,
    61. (void* )NULL,
    62. (UBaseType_t )LED1_TASK_PRIO,
    63. (TaskHandle_t* )&LED1Task_Handler);
    64. vTaskDelete(StartTask_Handler); //ɾ³ý¿ªÊ¼ÈÎÎñ
    65. taskEXIT_CRITICAL(); //Í˳öÁÙ½çÇø
    66. }
    67. //LED0ÈÎÎñº¯Êý
    68. void led0_task(void *pvParameters)
    69. {
    70. while(1)
    71. {
    72. LED0=~LED0;
    73. vTaskDelay(500);
    74. }
    75. }
    76. //LED1ÈÎÎñº¯Êý
    77. void led1_task(void *pvParameters)
    78. {
    79. while(1)
    80. {
    81. LED1=0;
    82. vTaskDelay(200);
    83. LED1=1;
    84. vTaskDelay(800);
    85. }
    86. }

  • 相关阅读:
    c++加速方法大全
    什么是活动目录(Active Directory)
    计算机毕业设计(附源码)python志愿者服务平台
    Python查验身份证
    软件项目管理 8.2.软件项目质量活动
    前端应用发布到nodejs server后浏览器刷新404问题
    人工神经网络实验报告,生成数据的神经网络
    ZKP3.2 Programming ZKPs (Arkworks & Zokrates)
    Electron内调用网页出现 $ is not defined 或者 jQuery is not defined
    学习 Rust 的第十天:枚举和模式匹配
  • 原文地址:https://blog.csdn.net/Paradise_Violet/article/details/126290748
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号