嵌入式学习小组
直播中

邓罕攀

8年用户 201经验值
私信 关注

为什么uCOS-II中断要调用OS_ENTER_CRITICAL();来进入临界区?

    原子哥的uCOS-II移植视频
其中浮点任务如下:
void float_task(void *pdata)
{
        OS_CPU_SR cpu_sr=0;
        static float float_num=0.01;
        while(1)
        {
                float_num+=0.01f;
                OS_ENTER_CRITICAL();        
                printf("float_num???: %.4frn",float_num);
                OS_EXIT_CRITICAL();               
                delay_ms(500);
        }
}
    是不是因为串口也有中断,所以在执行printf函数之前,调用OS_ENTER_CRITICAL();来进入临界区?
另外这两个函数OSIntEnter();  和OS_ENTER_CRITICAL();操作中断有什么区别?
   

回帖(3)

杨叶

2019-11-1 09:20:29
printf加保护是防止其他东西打断printf的运行,你可以去掉。
举报

蔡妮芩

2019-11-1 09:31:50
避免打印到一半跳到别的task里面,如果别的task没打印还好,如果有,那么打印出来就乱了。
举报

陈游斗

2019-11-1 09:37:18
原来是这样啊,谢了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分