【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.交给系统的调度器去执行

}

相关推荐
虎王物联5 小时前
STM32 HAL库串口DMA空闲中断:高效接收不定长Modbus数据帧
stm32·单片机·嵌入式硬件·dma·modbus
自小吃多6 小时前
DXF文件导入与PCB板框定义笔记
笔记·嵌入式硬件
SUNNYSPY0016 小时前
AO4402-ASEMI便携设备电源开关AO4402
单片机
单片机仿真设计8 小时前
【proteus仿真】基于 STC89C52 单片机家用智能台灯设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
2601_950790688 小时前
深圳国产单片机厂商怎么选?技术能力与服务能力检查表
单片机·嵌入式硬件·国产mcu·芯片厂商·深圳单片机·单片机选型
hongmai66688810 小时前
MP2348GTL-Z:这颗24V/4A同步降压芯片,把性能和体积平衡得恰到好处
c语言·开发语言·arm开发·单片机·5g
笨笨饿11 小时前
#135_代码中的类型重定义艺术:从基础封装到函数类型设计
开发语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式实时数据库
西城微科方案开发11 小时前
高精度低功耗胎压计方案——气压表解决方案
单片机·嵌入式硬件
LavaLin0112 小时前
STM32H562RGT6 与 STM32F722RET6 规格对比
stm32
VALENIAN瓦伦尼安教学设备12 小时前
设备状态检测振动分析实训台案例分析
大数据·数据库·人工智能·嵌入式硬件·算法