RTOS介绍 对于裸机而言,程序是在一个大循环while()中,执行逻辑是顺序执行,只有执行了上方的语句,才能执行下方的语句,无法实现多线程的操作。 RTOS是一个实时操作系统(类似linux),他对于不同的语句,可以创建不同的任务,并且这些任务可以同时运行,即同时处理不同的事情。 R
任务调度器 所谓任务调度器,其实就是使用一些调度算法来决定当前需要执行哪一个任务。 我们RTOS会创建很多个任务,这个任务我们同一时刻只能执行1个,执行哪一个呢?就是由调度算法来决定的。 FreeRTOS支持三种任务调度模式: 抢占式调度:主要是针对优先级不同的任务,每个任务都有
FreeRTOS源码 下载 -> FreeRTOS文件夹 -> Source文件夹 : 我们需要include文件夹,里面包含了FreeRTOS的头文件。 我们需要portable文件夹,里面包含了FreeRTOS的移植文件。 我们需要list.c、queue
任务创建和删除API 任务创建是我们要学习的第一个API函数,而任务创建也是众多API函数中,最复杂的一个。 任务的创建和删除本质就是调用FreeRTOS的API函数。 动态创建任务:任务的任务控制块以及任务的栈空间所需的内存,均由 FreeRTOS 从 FreeRTOS 管理
任务挂起与恢复API 挂起任务和删除任务有什么不同? 挂起任务类似暂停,可恢复; 删除任务,无法恢复,类似“人死两清。 有很多API函数都带有FromISR后缀,带FromISR后缀是在中断函数中专用的API函数 。 任务挂起函数 void vTaskSuspend(Tas
中断知识回顾 我们之前学习过裸机,应该很明白中断的概念,这里再复习一下相关知识,让CPU打断正常运行的程序,转而去处理紧急的事件(程序),就叫中断 。 ARM Cortex-M 使用了 8 位宽的寄存器来配置中断的优先等级,这个寄存器就是中断优先级配置寄存器。但STM32,只
临界段代码保护 什么是临界段? 临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段。 那么什么场合不能被打断?适用的场合: 1.外设:需严格按照时序初始化的外设:IIC、SPI等等 。软件IIC需要几微秒的延时,所以不能被打断。 2.系统:系统自身需求 。
列表和列表项简介 FreeRTOS中,列表是非常重要的!想要看懂FreeRTOS的源码,学会列表是必不可少的。 列表是 FreeRTOS 中的一个数据结构,概念上和链表有点类似,列表被用来跟踪 FreeRTOS中的任务。 列表项就是存放在列表中的项目。 我们看下图,可以明显的感受
开启任务调度器 开启任务调度器API函数:vTaskStartScheduler() 作用:用于启动任务调度器,任务调度器启动后, FreeRTOS 便会开始进行任务调度,即开始任务,如果不启用调度器,那么任务是得不到执行的。 该函数内部实现,如下: 1、先判断任务是静态创建还是