人若无名 便可潜心练剑.|

hazy1k

园龄:7个月粉丝:14关注:0

2025-02-19 17:15阅读: 3评论: 0推荐: 0

第2章 裸机系统

第二章 裸机系统

裸机系统通常分成轮询系统和前后台系统,有关这两者的具体实现方式请看下面的讲解

1. 轮询系统

轮询系统即是在裸机编程的时候,先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,顺序地做各种事情

// 轮询系统简单示例
int main(void)
{
    HAL_Init(); // 初始化硬件
    while(1)
    {
        // 要处理的任务1
        LED_ON();
        // 要处理的任务2
        LED_OFF();
        // 要处理的任务3
        // ......
    }
}

2. 前后台系统

相比轮询系统,前后台系统是在轮询系统的基础上加入了中断。外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中完成,中断在这里我们称为前台, main 函数里面的无限循环我们称为后台

// 前后台系统简单示例
int main()
{
    HAL_Init();
    while(1)
    {
        if(flag)
        {
            LED_ON();
        }
    }
}
// 中断服务函数
void LED_Handler()
{
   flag = 1;
   LED_OFF();
}

在顺序执行后台程序的时候,如果有中断来临,那么中断会打断后台程序的正常执行流,转而去执行中断服务程序,在中断服务程序里面标记事件,如果事件要处理的事情很简短,则可在中断服务程序里面处理,如果事件要处理的事情比较多,则返回到后台程序里面处理。虽然事件的响应和处理是分开了,但是事件的处理还是在后台里面顺序执行的,但相比轮询系统,前后台系统确保了事件不会丢失,再加上中断具有可嵌套的功能,这可以大大的提高程序的实时响应能力。在大多数的中小型项目中,前后台系统运用的好,堪称有操作系统的效果。

本文作者:hazy1k

本文链接:https://www.cnblogs.com/hazy1k/p/18724648

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   hazy1k  阅读(3)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起