[软件资料] 裸机前后台系统

[复制链接]
1495|3
 楼主| jf101 发表于 2024-7-22 21:00 | 显示全部楼层 |阅读模式

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

  4. int main(void)
  5. {
  6. /* 硬件相关初始化 */
  7. HardWareInit();

  8. /* 无限循环 */
  9. for (;;) {
  10.    if (flag1) {
  11.      /* 处理事情 1 */
  12.      DoSomething1();
  13.    }

  14.    if (flag2) {
  15.      /* 处理事情 2 */
  16.      DoSomethingg2();
  17.    }

  18.    if (flag3) {
  19.      /* 处理事情 3 */
  20.      DoSomethingg3();
  21.    }
  22. }
  23. }

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

  32. void ISR2(void)
  33. {
  34. /* 置位标志位 */
  35. flag2 = 2;

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

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

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

中国龙芯CDX 发表于 2024-7-26 22:53 | 显示全部楼层
有中断来临,那么中断会打断后台程序的正常执行流
szt1993 发表于 2024-7-27 12:43 | 显示全部楼层
前后台系统设计非常方便实用裸机开发
LOVEEVER 发表于 2024-8-9 19:48 | 显示全部楼层
是不是就是利用标致位进行相关硬件中断处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

262

主题

1929

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部