基于STM32的FreeRTOS学习
文章平均质量分 89
硬件:正点原子战舰v3
软件:Keil MDK,FreeRTOS代码
思考了一番,觉得既然学嵌入式了,不能一辈子裸机跑代码吧,还是要再学一个操作系统比较好~
天亮继续睡
从汽车NVH转战嵌入式软件开发,熟悉NVH软件(LMS Test.lab,Head),编程语言(C/C++,LabVIEW, Python,Matlab),开发环境(Keil,CCES,LabVIEW,Matlab),专注汽车声学、音频处理,自动化测试。欢迎交流~~~
展开
-
基于STM32的FreeRTOS学习之列表和列表项实验(十)
记录一下,方便以后翻阅~上一章介绍了FreeRTOS列表和列表项的相关概念和函数说明,本章进行相关实验。1. 实验目的列表和列表项实验演练。2. 实验设计本实验设计3个任务:start_task:用来创建其他2个任务;task1_task:应用任务1,控制LED灯闪烁,提示系统正常运行;list_task:列表和列表项操作任务,调用列表和列表项相关API函数,通过串口输出相应信息观察这些API函数的运行过程。本实验需要用到按键,用于控制任务的运行。3. 硬件1) 正点原子战舰v3开发板原创 2021-03-23 09:13:24 · 241 阅读 · 0 评论 -
基于STM32的FreeRTOS学习之列表和列表项(九)
记录一下,方便以后翻阅~列表和列表项是FreeRTOS的一个数据结构,FreeRTOS大量使用列表和列表项,它是FreeRTOS的基石。1. 什么是列表和列表项1.1 列表列表是FreeRTOS的一个数据结构,被用来跟踪FreeRTOS中的任务。与列表有关的东西都在list.c和list.h文件里。在list.h中定义了一个List_t的结构体:typedef struct xLIST{ listFIRST_LIST_INTEGRITY_CHECK_VALUE // 检查列表完整性,将c原创 2021-03-20 17:56:36 · 530 阅读 · 1 评论 -
基于STM32的FreeRTOS学习之任务挂起和恢复API函数及实验(八)
记录一下,方便以后翻阅~本章继续学习剩余的与任务相关的API函数。任务挂起和恢复API函数有时候需要暂停某个任务的运行,过一段时间后再重新运行。这时要使用任务删除和重建的方法的话那么任务中的变量值就丢失了!FreeRTOS提供了任务挂起和恢复函数,可以解决该问题:1.1 函数vTaskSuspend()此函数用于将某个任务设置为挂起状态,进入挂起态的任务永远不会进入运行态。退出挂起态的唯一方法就是调用任务恢复函数vTaskResume()或xTaskResumeFromISR(),函数申明如下:原创 2021-03-14 22:05:50 · 426 阅读 · 0 评论 -
基于STM32的FreeRTOS学习之创建任务和删除任务相关API函数及实验(七)
记录一下,方便以后翻阅~有了上一章学到的任务基础知识,本章开始学习如何使用FreeRTOS有关创建任务和删除任务相关的API函数。1. 任务创建和删除API函数FreeRTOS最基本的功能是任务管理,而任务管理最基本的操作就是创建和删除任务,相关API函数如下:1.1 函数xTaskCreate()此函数用来创建一个任务。任务需要RAM来保存与任务有关的状态信息(任务控制块),任务也需要一定的RAM来作为任务堆栈。如果使用函数xTaskCreate()来创建任务,那么这些所需的RAM会自动从F原创 2021-03-14 14:37:06 · 318 阅读 · 0 评论 -
基于STM32的FreeRTOS学习之任务基础知识(六)
记录一下,方便以后翻阅~RTOS系统的核心是任务管理,初学RTOS系统必须先掌握任务的创建、删除、挂起和恢复等操作。1. 什么是多任务系统玩裸机一般都是在main函数里用while(1)做一个死循环完成所有处理,同时再加一些中断完成一些特定的处理,这里中断服务函数叫前台程序,死循环叫后台程序,即前后台系统(单任务系统),如下图所示:前后台系统的实时性差,所有任务的优先级都是一样的,没轮到你就只能等着!多任务系统就应运而生。RTOS系统有个任务调度器,不同系统的任务调度器的实现方法是不同的,Free原创 2021-03-14 12:19:17 · 530 阅读 · 0 评论 -
基于STM32的FreeRTOS学习之中断测试实验(五)
记录一下,方便以后翻阅~本章内容是接着上一章节进行的实际演练。1. 实验目的FreeRTOS可以屏蔽优先级低于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断,不会屏蔽高于其的中断。本次实验就是验证这个说法。本实验使用两个定时器,一个优先级为4,另一个为5,两个定时器每隔1s通过串口输出一串字符串。然后在某个任务中关闭中断一段时间,查看输出情况。2. 实验设计本实验设计了两个任务start_task()和interrupt_task(),这两个任务的任务功能分别为:原创 2021-03-13 23:06:46 · 543 阅读 · 0 评论 -
基于STM32的FreeRTOS学习之中断配置和临界段(四)
记录一下,方便以后翻阅~FreeRTOS的中断配置需要根据MCU具体配置,这需要我们了解MCU架构关于中断的知识。1. Cortex-M中断1.1 简介中断由硬件产生,当中断产生后CPU会中断当前的流程转而去处理中断服务,Cortex-M内核MCU提供了用于中断管理的嵌套向量中断控制器(NVIC)。NVIC最多支持240个中断请求(IRQ)、1个不可屏蔽中断(NMI)、1个滴答定时器中断(Systick)和多个系统异常。1.2 管理方式Cortex-M处理器有多个用于管理中断和异常的可编程寄存器原创 2021-03-13 18:58:24 · 826 阅读 · 2 评论 -
基于STM32的FreeRTOS学习之FreeRTOS配置文件FreeRTOSConfig.h解读(三)
记录一下,方便以后翻阅~1. FreeRTOSConfig.h文件1.1 "INCLUDE_"开始的宏使用"INCLUDE_"开头的宏用来使能或失能FreeRTOS中相应的API函数,如下图,INCLUDE_vTaskPrioritySet设置为1,表示使用vTaskPrioritySet函数。其作用就是条件编译,这样可以根据实际需求减少系统占用的ROM和RAM大小。在移植的FreeRTOS_CORE分组中的task.c源文件里,有如下函数,这样就理解了吧。1.2 "config_"开始的宏原创 2021-03-12 10:24:37 · 946 阅读 · 0 评论 -
基于STM32的FreeRTOS学习之FreeRTOS移植(二)
记录一下,方便以后翻阅~1. 准备工作1)FreeRTOS源码(选择所需要的即可)。2. FreeRTOS移植2.1 添加FreeRTOS源码在案例文件夹中新建一个FreeRTOS文件夹,以后将FreeRTOS的源码添加至该文件夹里。根据前一章的知识点,portable文件夹里只需留下keil、MemMang和RVDS三个文件夹,其余都可以删除。2.2 在工程分组中添加文件打开案例工程,新建分组FreeRTOS_CORE和FreeRTOS_PORTABLE,然后添加文件。 FreeRTOS_原创 2021-03-11 23:16:54 · 690 阅读 · 0 评论 -
基于STM32的FreeRTOS学习之FreeRTOS简介(一)
记录一下,方便以后翻阅~1. 什么是FreeRTOSFreeRTOS全称Free Real Time Operating System,顾名思义就是免费的实时操作系统。一般,一个处理器核心在某一时刻只能运行一个任务,操作系统中任务调度器的责任就是决定在那个时刻应该运行哪个任务。FreeRTOS是由用户给每个任务分配一个任务优先级,任务调度器根据此优先级决定下一刻运行哪个任务。2. FreeRTOS优势1)FreeRTOS是免费的!运行在商业应用中使用,且不需要公开代码。2)许多半导体厂商产品SDK原创 2021-03-11 10:27:58 · 1113 阅读 · 2 评论