带有RTOS下和不带RTOS(裸机状态)的全局变量读写方法有很大不同。此篇文章将讨论带有RTOS的C语言程序中,如何合理第读写全局变量。
在嵌入式软件开发中,面对高并发、高复杂业务的场景,类似于UCOS、FreeRTOS、RT-Thread的实时操作系统RTOS越来越多地应用到软件设计中。此种情况下,软件设计方法和裸机状态下有很大不同,RTOS引入了多任务、信号量、邮箱、消息队列、事件标志组等概念和机制。当一个全局变量被多个任务或者多个线程共享时,这个全局变量就变成了共享资源,此时读写共享变量时需要进行一些保护。(注意,全局变量仅仅被一个任务使用时,就不是共享资源了,其读写方法和)。
方法一:开中断和关中断
int varStudentScore;
void modifyvarStudentScore(int score) /*注意此函数可能被多个线程或者中断同时调用*/
{
OS_CPU_SR cpu_sr;
OS_ENTER_CRITICAL(); /*进入临界段*/
varStudentScore=score;
OS_EXIT_CRITICAL(); /*退出临界段*/
}
最简单的方法就是先关中断进入临界段,再对全局变量进行修改,再退出临界段。
方法一适合场景

最低0.47元/天 解锁文章
2625

被折叠的 条评论
为什么被折叠?



