打印
[软件资料]

裸机前后台系统

[复制链接]
884|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jf101|  楼主 | 2024-7-22 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在裸机系统中,所有的操作都是在一个无限的大循环里面实现,支持中断检测。外部中断紧急事件在中断里面标记或者响应,中断服务称为前台,main 函数里面的while(1)无限循环称为后台,按顺序处理业务功能,以及中断标记的可执行的事件。小型的电子产品用的都是裸机系统,而且也能够满足需求。
int flag1 = 0;
int flag2 = 0;
int flag3 = 0;

int main(void)
{
/* 硬件相关初始化 */
HardWareInit();

/* 无限循环 */
for (;;) {
   if (flag1) {
     /* 处理事情 1 */
     DoSomething1();
   }

   if (flag2) {
     /* 处理事情 2 */
     DoSomethingg2();
   }

   if (flag3) {
     /* 处理事情 3 */
     DoSomethingg3();
   }
}
}

void ISR1(void)
{
/* 置位标志位 */
flag1 = 1;
/* 如果事件处理时间很短,则在中断里面处理
如果事件处理时间比较长,在回到后台处理 */
DoSomething1();
}

void ISR2(void)
{
/* 置位标志位 */
flag2 = 2;

/* 如果事件处理时间很短,则在中断里面处理
如果事件处理时间比较长,在回到后台处理 */
DoSomething2();
}

void ISR3(void)
{
/* 置位标志位 */
flag3 = 1;
/* 如果事件处理时间很短,则在中断里面处理
如果事件处理时间比较长,在回到后台处理 */
DoSomething3();
}

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

使用特权

评论回复
沙发
中国龙芯CDX| | 2024-7-26 22:53 | 只看该作者
有中断来临,那么中断会打断后台程序的正常执行流

使用特权

评论回复
板凳
szt1993| | 2024-7-27 12:43 | 只看该作者
前后台系统设计非常方便实用裸机开发

使用特权

评论回复
地板
LOVEEVER| | 2024-8-9 19:48 | 只看该作者
是不是就是利用标致位进行相关硬件中断处理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

235

主题

1542

帖子

2

粉丝