码农知识堂 - 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. }

  • 相关阅读:
    MySQL数据库之主从复制及读写分离
    安装sklearn包错误解决以及 scikit-learn简介
    【嵌入式Linux】编译应用和ko内核模块Makefile使用记录
    Kubernetes 理解kubectl/调试
    kubernetes负载均衡部署
    附录10-项目黑马面面
    【JavaWeb】第五章 jQuery(下篇)
    uniapp实现安卓端导出execl、打包excel为zip压缩文件、分享zip压缩文件到微信、qq
    Redis集群什么情况下整个集群不可用了?
    『华强买瓜』奇袭好莱坞!Jupyter也能创建可交互仪表板啦!超全面的英语论文写作套路;神经辐射场NeRF工具包;前沿论文 | ShowMeAI资讯日报
  • 原文地址:https://blog.csdn.net/Paradise_Violet/article/details/126290748
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号