| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> FreeRTOS(基于STM32)——任务创建 -> 正文阅读 |
|
[嵌入式]FreeRTOS(基于STM32)——任务创建 |
目录 任务概念:在STM32裸机开发中,我们存在一个main函数,所有代码在main函数中执行。类似的我们在FreeRTOS中也有这样的概念,创建一个函数,这个函数就像是main函数一样有着一直在函数中执行,无限循环且不退出的功能。 定义任务栈&函数&控制块:定义任务栈:此处栈为单片机RAM中一段连续的内存空间,其大小可以自行分配,为了给每个任务提供一个运行空间 任务函数:任务控制块:在裸机开发中,程序按顺序执行,FreeRTOS则可以灵活地调度任务,这就需要给每个任务一个标识,通过任务控制块,系统可以更灵活的控制任务执行。 ?列表和列表项:列表的简介:(1)(5)用来检测列表的完整性,开启相关宏后开启 (2)记录列表项的数量 (3)记录列表的索引号 (4)指定列表中最后一个列表项,标识列表结束 列表项的简介:是存放在列表中的项目(列表项和mini列表项) (2)列表项的值 (3)指向下一个列表项 (4)指向前一个列表项 (5)列表项的所有者(通常是任务控制块) (6)列表项所属列表 mini列表项:(2)值 (3)指向下一个 (4)指向上一个 列表初始化:(1)pxIndex标识列表索引号? ? xListEnd标识列表末尾 (2)对于末尾列表项的初始化 (3)用来指向下一个列表项 (4)用来指向上一个列表项 (6)用于完整性检测 (7)用于完整性检测 列表项初始化:给列表项赋值 列表项插入函数:?插入后形成一个环形的结构 列表项末尾插入函数:列表项删除函数:如果不是动态分配内存,删除后内存不会释放 列表遍历函数:实现任务创建函数xTaskCreateStatic()函数:(1)条件编译,当宏设置为1时才编译此块,设置为支持静态内存任务创建 (2)指向任务的空指针(任务入口) (3)任务名称 (4)任务堆栈大小 (5)传递给任务函数的参数 (6)任务优先级(抢占式优先级) (7)任务栈起始地址 (8)任务控制块指针? prvInitialiseNewTask()函数:(1)指向任务的空指针(任务入口) (2)任务名称 (3)任务堆栈大小 (4)传递给任务函数的参数 (5)任务优先级(抢占式优先级) (6)任务句柄 (7)任务控制块指针? pxPortInitialiseStack()函数:?重点在xTaskCreateStatic()函数的调用和使用 实现就绪列表定义就绪列表:?实现调度器:从就绪列表中找到优先级最高的任务执行 vTaskStartScheduler()任务创建——静态方法(1)在main中初始化硬件Init();(2)创建开始任务注意在FreeRTOSConfig.h中设置支持静态内存 (3)启动任务调度器(4)在开始任务中创建一些子任务(实际逻辑代码任务)(5)删除开始任务空闲任务和定时器任务的相关定义在FreeRTOSConfig.h中 在静态方法中定时器任务和空闲任务都需我们自己手动分配 任务创建——动态方法与静态方法相比动态方法的堆栈大小是自动分配的 注意在FreeRTOSConfig.h中设置不支持静态内存】 tips:FreeRTOS中内置官方延时函数vTaskDelay();会实现任务的的调度,自己定义的delay函数则不会实现任务的调度。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:55:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |