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

}

相关推荐
Lumos6fly1 天前
《嵌入式通讯协议栈实战》 5 AT24C02与OLED
stm32·单片机
天吾cc1 天前
RTT-IO设备模型
单片机·嵌入式硬件·学习
wengqidaifeng1 天前
2026 年电赛(TI 杯)H 题:MaxiCamPro、双主控通信、VOFA+ 遥测与可复现实验方法
c语言·单片机·嵌入式硬件
寻道模式1 天前
【运维心得】电视KK.RV22.E32B“捉鬼”实录:从炸机到 eMMC 的千里追击(1)
单片机·嵌入式硬件·mos管·开关电源
科芯创展1 天前
XZ6206,6.5V,300mA稳压LDO芯片
单片机
科芯创展1 天前
XC6206,8V,250mA稳压LDO芯片
嵌入式硬件
平凡的小蚂蚁1 天前
Exynos4412-POP-7inLCD裸机开发完整教程(STM32 库风格)
驱动开发·stm32·单片机·嵌入式硬件·嵌入式·硬件工程
破晓单片机1 天前
096、STM32项目分享开源:蓝牙智能手环
stm32·单片机·嵌入式硬件·开源
天吾cc1 天前
RTT-Pin设备模型
单片机·嵌入式硬件
半仙10081 天前
电感式编码器 IS06-18 在轮毂电机中的实战应用指南
嵌入式硬件·机器人