首先,freertos移植是第一步,野火、原子、普中都有介绍。

这里记录一下,使用freertos点亮两个led,两个led之间的运行不受影响,不必等待点亮第一个led后,再点亮第二个led,这样cpu的利用率更高,实时性强

其步骤包括:

1.优先级、堆栈大小、任务函数、任务句柄的声明与定义。

//优先级
#define START_TASK_PRIO       1
//堆栈大小
#define START_STK_SIZE        120
//任务函数
void start_task(void * pvParameters);
//任务句柄
TaskHandle_t StartTask_Handler;//task1优先级
#define TASK1_TASK_PRIO         2
//task1堆栈大小
#define TASK1_STK_SIZE        120
//task1函数声明
void task1_task(void * pvParameters);
//task1任务句柄
TaskHandle_t  Task1Task_Handler;//task2优先级
#define TASK2_TASK_PRIO         3
//task2堆栈大小
#define TASK2_STK_SIZE        120
//task2函数声明
void task2_task(void * pvParameters);
//task2任务句柄
TaskHandle_t  Task2Task_Handler;

与裸机的优先级不同,freertos下的优先级的数字越大,优先级越高

2、任务创建与调度

xTaskCreate((TaskFunction_t ) start_task,(char *         ) "start_task",(uint16_t      ) START_STK_SIZE,(void *         ) NULL,(UBaseType_t    ) START_TASK_PRIO,(TaskHandle_t * ) &StartTask_Handler);                                     vTaskStartScheduler();//开启任务调度 

3、创建子任务(task1 、task2)

 void start_task(void * pvParameters)
{//创建Task1xTaskCreate((TaskFunction_t ) task1_task,(char *              ) "task1_task",(uint16_t          ) TASK1_STK_SIZE,(void *         ) NULL,(UBaseType_t    ) TASK1_TASK_PRIO,(TaskHandle_t * ) &Task1Task_Handler);//创建Task2xTaskCreate((TaskFunction_t ) task2_task,(char *               ) "task2_task",(uint16_t          ) TASK2_STK_SIZE,(void *         ) NULL,(UBaseType_t    ) TASK2_TASK_PRIO,(TaskHandle_t * ) &Task2Task_Handler);vTaskDelete(StartTask_Handler);//删除任务,删除自身用NULL
}

3、子任务详细内容(由于上一步创建了任务,但任务执行需要具体化,这里对两个led亮灭的时间进行设置,延时需要freertos提供的vTaskDelay函数,否则无法进入任务的执行

//任务1
void task1_task(void * pvParameters)
{while(1){        //vTaskDelete(StartTask_Handler); LED0=~LED0;vTaskDelay(500);}}// 任务2
void task2_task(void * pvParameters)
{ while(1){LED1=0;vTaskDelay(1000);LED1=1;vTaskDelay(1000);}}

学习小结:freertos执行多个任务的原理是:cpu同一时刻只能一个任务,但很短的一个时间内来回切换任务,造成可以在同一时刻执行多个任务的错觉。

学习freertos之点亮led入门(stm32c8t6)相关推荐

  1. 【小月电子】安路国产FPGA开发板系统学习教程-LESSON1点亮LED灯

    点亮LED灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如非常简单的项目,我们 ...

  2. 【小月电子】XILINX FPGA开发板(XLOGIC_V1)系统学习教程-LESSON1点亮LED灯

    点亮LED灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去 ...

  3. 硬件学习笔记(一)AD入门+STM32C8T6最小开发板得制作

    参考视频: Altium Designer 20 19(入门到精通全38集) 2小时教你用AD19画一块STM32最小系统板 工程及库文件的建立 首先建立一个工程文件 更改工程文件的路径和名称,左侧保 ...

  4. 嵌入式开发学习之--点亮LED灯(上)

    在嵌入式学习里,点亮LED灯的地位就如同编程语言学习里的"hello world",是每个初学者都必须经历的一关,因为点亮了LED灯,至少可以说明几件事: 1.开发环境没问题,包括 ...

  5. 基于Proteus无实物零基础STM32入门自学教程(七)--定时器点亮LED

    简介:本项目为基于STM32F103R6为核心定时器点亮LED工程.在第一个任务里我们点亮LED是使用延时点亮.从这一讲我们开始学习真正的定时器使用方法,而这种方法是最接近实际应用的.实际应用中几乎不 ...

  6. 基于STM32F103入门1——点亮LED灯

    今天学习了STM32固件库点灯程序 点灯也可以玩过很多好玩的东西,在这里做一下总结. STM32点灯程序合集 1:新建固件库工程文件 1.1找到一个固件库模板 1.2:打开KEIL5新建工程 1.3: ...

  7. zigbee学习之路(二)点亮LED

    一.前言 今天,我来教大家如何点亮led,这也是学习开发板最基础的步骤了. 二.原理分析 cc2530芯片跟虽然是51的内核,但是它跟51单片机还是有区别的,51单片机不需要对IO口进行配置,而cc2 ...

  8. 【STM32学习笔记-点亮LED灯】

    STM32学习笔记-点亮LED灯 文章目录 STM32学习笔记-点亮LED灯 一.原理图分析 二.代码分析 1.mian函数 2.led.c函数 3.led.h函数 4.函数文件整理 5.LED_In ...

  9. N76E003 学习一 点亮LED

    //这3个头文件一般是必须的 #include "N76E003.h" #include "SFR_Macro.h" #include "Functi ...

最新文章

  1. 阿里大佬告诉你,支付宝的架构到底有多牛逼!还没看完我就跪了!
  2. SnowNLP简易教程:分词、词性标注、情感分析、繁体转换、关键字抽取、相似度计算...
  3. VC++图片框控件静态和动态加载位图
  4. 故障模块名称kernelbase.dll_西门子PLC数字量DI扩展模块1221一级总代理
  5. 微服务架构---幂等机制
  6. python extended,python list中的append 与 extended 的区别
  7. api过滤器_了解播放过滤器API
  8. OAuth2.0详解
  9. The use specified as definer('root'@'%') does not exist的解决办法
  10. android获取服务器时间格式,Android 获取服务器与客户端时差的实例代码
  11. 数字轮廓投影仪行业调研报告 - 市场现状分析与发展前景预测
  12. 数字图像处理(第三版)
  13. 蓝光三维扫描仪 蓝光投影仪
  14. 2021英一Text4精读、背景和语法分析(网络中立是生是死?难下定论)
  15. VBA 程序加密破解
  16. BUU-RSA入门题合集 第二弹
  17. Raspberry - 解决中兴(ZTE)摄像头无法使用密码访问树莓派上的samba共享(NAS)
  18. 如何建立Multi-Step(多步预测)的LSTM时间序列模型(以对家庭用电预测为例)
  19. POJ 3384 Feng Shui(半平面交)
  20. 开源巨献:Google最热门60款开源项目(转)

热门文章

  1. 核算 央行 支付机构 备付金 对账10大文件等
  2. MySQL 大表性能优化
  3. CAD闭合区域填充方法
  4. 【小米MIoT设备接入HomeAssistant通用插件教程】
  5. 时域频域的四种傅里叶变换
  6. 如何写好一个软件项目的技术标书?
  7. 中国慕课c语言入门视频,程序设计入门——C语言
  8. 蓝桥杯练习【数论基础】——一元三次方程求解
  9. Could not get JDBC Connection
  10. 重庆交通大学校园邮箱开通