学习freertos之点亮led入门(stm32c8t6)
首先,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)相关推荐
- 【小月电子】安路国产FPGA开发板系统学习教程-LESSON1点亮LED灯
点亮LED灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如非常简单的项目,我们 ...
- 【小月电子】XILINX FPGA开发板(XLOGIC_V1)系统学习教程-LESSON1点亮LED灯
点亮LED灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去 ...
- 硬件学习笔记(一)AD入门+STM32C8T6最小开发板得制作
参考视频: Altium Designer 20 19(入门到精通全38集) 2小时教你用AD19画一块STM32最小系统板 工程及库文件的建立 首先建立一个工程文件 更改工程文件的路径和名称,左侧保 ...
- 嵌入式开发学习之--点亮LED灯(上)
在嵌入式学习里,点亮LED灯的地位就如同编程语言学习里的"hello world",是每个初学者都必须经历的一关,因为点亮了LED灯,至少可以说明几件事: 1.开发环境没问题,包括 ...
- 基于Proteus无实物零基础STM32入门自学教程(七)--定时器点亮LED
简介:本项目为基于STM32F103R6为核心定时器点亮LED工程.在第一个任务里我们点亮LED是使用延时点亮.从这一讲我们开始学习真正的定时器使用方法,而这种方法是最接近实际应用的.实际应用中几乎不 ...
- 基于STM32F103入门1——点亮LED灯
今天学习了STM32固件库点灯程序 点灯也可以玩过很多好玩的东西,在这里做一下总结. STM32点灯程序合集 1:新建固件库工程文件 1.1找到一个固件库模板 1.2:打开KEIL5新建工程 1.3: ...
- zigbee学习之路(二)点亮LED
一.前言 今天,我来教大家如何点亮led,这也是学习开发板最基础的步骤了. 二.原理分析 cc2530芯片跟虽然是51的内核,但是它跟51单片机还是有区别的,51单片机不需要对IO口进行配置,而cc2 ...
- 【STM32学习笔记-点亮LED灯】
STM32学习笔记-点亮LED灯 文章目录 STM32学习笔记-点亮LED灯 一.原理图分析 二.代码分析 1.mian函数 2.led.c函数 3.led.h函数 4.函数文件整理 5.LED_In ...
- N76E003 学习一 点亮LED
//这3个头文件一般是必须的 #include "N76E003.h" #include "SFR_Macro.h" #include "Functi ...
最新文章
- 阿里大佬告诉你,支付宝的架构到底有多牛逼!还没看完我就跪了!
- SnowNLP简易教程:分词、词性标注、情感分析、繁体转换、关键字抽取、相似度计算...
- VC++图片框控件静态和动态加载位图
- 故障模块名称kernelbase.dll_西门子PLC数字量DI扩展模块1221一级总代理
- 微服务架构---幂等机制
- python extended,python list中的append 与 extended 的区别
- api过滤器_了解播放过滤器API
- OAuth2.0详解
- The use specified as definer('root'@'%') does not exist的解决办法
- android获取服务器时间格式,Android 获取服务器与客户端时差的实例代码
- 数字轮廓投影仪行业调研报告 - 市场现状分析与发展前景预测
- 数字图像处理(第三版)
- 蓝光三维扫描仪 蓝光投影仪
- 2021英一Text4精读、背景和语法分析(网络中立是生是死?难下定论)
- VBA 程序加密破解
- BUU-RSA入门题合集 第二弹
- Raspberry - 解决中兴(ZTE)摄像头无法使用密码访问树莓派上的samba共享(NAS)
- 如何建立Multi-Step(多步预测)的LSTM时间序列模型(以对家庭用电预测为例)
- POJ 3384 Feng Shui(半平面交)
- 开源巨献:Google最热门60款开源项目(转)