【stm32_3】嵌入式软件系统架构

一、轮询式系统

轮询式系统 : 在裸机开发的程序运行时,先对所有的硬件进行初始化,然后在主程序中写一个死循环,顺序地处理各种事件。

  • 优点:简单可靠的方式,适用于在只需要按照顺序执行,并且没有外部事件的影响的情况下。
  • 缺点:实时性差。程序的运行过程中出现如按键等需要外部检测的事件,轮询系统的实时响应能力变得很差。

int main()

{

//1. 对所有的硬件进行初始化(LED、BEEP、KEY......)

//2.进入死循环

while(1)

{ //点灯

//警报

//按键

}

}

二、前后台系统

前后台系统增加中断的概念。

如果++外部事件发生,则在中断中进行处理;主程序在轮询系统中运行++。

中断被称为前台 ,主程序中的while(1)就称为后台。

执行顺序 : 发生异常中断,中断会终止后台程序的运行**→** 跳转到对应的中断服务函数中处理,处理完成后 **→**继续执行后台的程序。

  • 优点:提高程序的实时响应能力,避免造成外部事件的缺失。

//中断被称为前台

void IRQ(void)

{

//

}

//轮询式主程序

int main()

{

//对所有的硬件进行初始化(LED、BEEP、KEY......)

//对中断配置和使能

//轮询式系统

while(1)

{

//

}

}

三、多任务系统

多任务系统的外部事件也是在中断中进行响应,但是++外部事件的处理是任务中进行处理++。

任务具有优先级,优先级高的任务先处理。

程序就会被分割为一个个的任务,++任务是一个独立的死循环,并且不能返回++,可以由操作系统进行任务的调度。

//任务1

void * task1(void *arg)

{

while(1)

{

//

}

}

//任务2

void * task2(void *arg)

{

while(1)

{

//

}

}

int main()

{

//1.对所有的硬件进行初始化

//2.创建任务,并设置任务的属性(优先级、内存分配、时间片)

//3.交给系统的调度器去执行

}

相关推荐
fly_sunnn32 分钟前
STM32-GPIO
stm32·单片机·嵌入式硬件
宵时待雨4 小时前
STM32基础1:嵌入式历史与生态
stm32·单片机·嵌入式硬件
zhangzhangkeji4 小时前
stm32 14-1 WDG 看门狗:理论部分
stm32
不会代码的小猴5 小时前
启动文件
stm32·嵌入式硬件
深圳老胡5 小时前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
甜甜的大香瓜5 小时前
【MT32F006】MT32F006之Timer定时
单片机
甜甜的大香瓜5 小时前
【MT32F006】MT32F006之读写内部EEPROM
单片机
2401_862880826 小时前
iMX6ULL 驱动工程搭建 + LED 灯驱动
c语言·驱动开发·嵌入式硬件
hahaha60166 小时前
FPGA+ARM实现AWB的全流程
人工智能·嵌入式硬件·算法·计算机视觉·fpga开发
沐欣工作室_lvyiyi6 小时前
超市智能货架系统设计与实现(论文+源码)
c语言·单片机·课程设计·电子信息工程毕业设计·黑龙江工商学院·广州工商学院·成都工业学院