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

}

相关推荐
Strange_Head38 分钟前
补充知识点`makefile`、`config`、`GLP协议` 1/3 ——《驱动篇》
linux·嵌入式硬件
国科安芯1 小时前
商业航天与航空安全场景下抗辐射 MCU 选型、应用实践及发展趋势
单片机·嵌入式硬件·无人机·cocos2d·risc-v
Jun6264 小时前
【STM32】HMC5883驱动(带航向角计算)
stm32·单片机·嵌入式硬件
wearegogog1234 小时前
基于STM32的酒精检测仪设计
stm32·单片机·嵌入式硬件
Deitymoon5 小时前
STM32——led灯点亮
stm32·单片机·嵌入式硬件
Jack_02205 小时前
基于51单片机的双路倒车雷达测距报警系统设计_LCD1602显示+超声波
单片机·51单片机·雷达·超声波·倒车·lcd1602显示
小柯博客5 小时前
Amazon Kinesis Video Streams C WebRTC SDK 开发实战
c语言·开发语言·网络·stm32·嵌入式硬件·webrtc·yocto
HIZYUAN6 小时前
FPGA/CPLD漫谈:2K LUT的功能定位与典型方案(一)
stm32·单片机·嵌入式硬件·fpga开发·国产mcu+fpga
SunAqua6 小时前
《MCU与DSP芯片笔记》二、DSP芯片TI C2000系列TMS320F2800137
笔记·单片机·嵌入式硬件
d111111111d6 小时前
STM32-UART抽象层封装调试
笔记·stm32·单片机·嵌入式硬件·学习