FreeRTOS任务与中断
内核控制函数
任务挂起和恢复API函数
中断是微控制器一个很常见的特性,中断由硬件产生,当中断产生以后CPU 就会中断当前的流程转而去处理中断服务。Cotex-M3 和 M4 的 NVIC 最多支持 240 个 IRQ(中断请求)、 1 个不可屏蔽中断(NMI)、 1 个Systick(滴答定时器)定时器中断和多个系统异常。与中断有关的寄存器都在NVIC和SCB中。
中断屏蔽寄存器有三个:
PRIMASK //所有中断
FAULTMASK //系统异常
BASEPRI //屏蔽大于给定值
开中断函数:
portENABLE_INTERRUPTS()
关中断函数:
portDISABLE_INTERRUPTS()
FreeRTOS时间管理与消息队列:
系统延时函数有:
vTaskDelay()
u vTaskDelayUntil()
u xTaskGetTickCount()
u xTaskGetTickCountFromISR()
队列是为了任务与任务、任务与中断之间的通信而准备的,可以在任务与任务、任务与中断之间传递消息,队列中可以存储有限的、大小固定的数据项目。任务与任务、任务与中断之间要交流的数据保存在队列中,叫做队列项目。队列所能保存的最大数据项目数量叫做队列的长度,创建队列的时候会指定数据项目的大小和队列的长度。由于队列用来传递消息的,所以也称为消息队列。FreeRTOS 中的信号量的也是依据队列实现的!
队列创建函数
入队函数
出队函数
vTaskList