1:临界段
在访问共享资源时不希望被其他任务或者中断打断的代码
这段要执行的代码称为临界段代码
2:设置临界段的目的
保护共享资源:
例如,全局变量,公共函数,不可重入函数(函数里面使用
了一些静态全局变量,malloc 等)
保护外设的实时性:
对时序有精准要求的操作
用户不想被打断的代码
3:M4使用临界段注意事项
{ 开启临界段实际上内部调用的taskDISABLE_INTERRUPUTS( );//关闭中断
但是仅仅只能关闭优先级低于 configMAX_SYSCALL_INTERRUPUT_PRIORITY这个的中断,
并且此接口不可嵌套
taskENABLE_INTERRUPUTS( );//开启中断 }
{ taskENTER_CRITICAL(void );次函数才是进入临界段的函数
支持嵌套,任务在运行态内被调用,不被中断打断,一直处于运行状态
有进入必须要有退出,成对出现
需要保证临界段执行周期比较快,否则影响中断和调度器工作 }
taskEXIT_CRITICAL(void );退出临界段,此函数不能在中断中使用