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

}

相关推荐
不做无法实现的梦~19 小时前
86步进电机和DM860H驱动器的使用方法和记录
单片机·嵌入式硬件
Aaron158820 小时前
RFSOC+VU13P/VU9P+GPU多通道同步一体化解决方案
人工智能·嵌入式硬件·算法·matlab·fpga开发·硬件架构·基带工程
所见即所得1111120 小时前
stm32烧录过程中串口问题(串口被占用无法使用)
stm32·单片机·嵌入式硬件
Freak嵌入式20 小时前
WIZnet-EVB-Pico2开始,用MicroPython玩转以太网开发
arm开发·人工智能·python·嵌入式硬件·机器人·嵌入式·micropython
Ligocious21 小时前
stm32---1.两种开发方式点亮LED
stm32·单片机
黑白园21 小时前
STM32F103C8TC使用ST-Link下载
stm32·单片机·嵌入式硬件
时空自由民.21 小时前
嵌入式MCU的中断系统工作流程及其原理
单片机·嵌入式硬件
LCG元21 小时前
STM32实战:基于STM32F103的智慧教室环境监控系统(CO₂+光照+人数统计)
前端·stm32·嵌入式硬件
振南的单片机世界21 小时前
推挽输出:上管推、下管拉,驱动强但不“合群”
arm开发·stm32·单片机·嵌入式硬件
森利威尔电子-1 天前
森利威尔SL7140|2.5–24V 宽压 / 10mA–2A / PWM 调光 线性 LED 恒流驱动
单片机·嵌入式硬件·集成电路·芯片·电源芯片