- FreeRTOS中断和临界段配置
Cortex-M3的NVIC最多支持240个IRQ中断,1个不可屏蔽中断(NMI),1个systick(滴答定时器)和多个系统异常中断。
临界段:必须不打断完整运行。优先级低于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断不响应。
中断级临界段:用在中断服务程序中,优先级低于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断不响应。先读出BASEPRI的值保存,将configMAX_SYSCALL_INTERRUPT_PRIORITY写入寄存器BASEPRI,退出临界代码时重新写入BASEPRI。
portDISABLE_INTERRUPTS();//关闭中断
portENABLE_INTERRUPTS();//开启中断
taskENTER_CRITICAL();//进入临界段
taskEXIT_CRITICAL(); //退出临界段
uint32_t status;
status=taskENTER_CRITICAL_FROM_ISR();//中断级临界
taskEXIT_CRITICAL_FROM_ISR(status);//中断级临界
vTaskSuspend();//挂起任务
vTaskResume();//退出挂起任务
2.任务创建和删除
xTaskCreate();
xTaskCreateStatic();
xTaskCreateRestricted();//带MPU(内存保护单元)创建
vTaskDelete(); //删除