当前位置: 首页 > article >正文

基于消息事件实现结合状态机实现事件触发通用单片机逻裸机框架处理

1. 框架结构

  • ISR:生成消息(事件)并提交到消息缓冲区。

  • 消息缓冲区:存储待处理的消息。

  • 主状态机:从消息缓冲区中取出消息并处理,驱动状态迁移。

    2. 代码实现

    (1) 消息定义

    #include "stm32f10x.h"
    #include <stdbool.h>

    // 消息类型定义
    typedef enum {
        MSG_NONE,
        MSG_BUTTON_PRESS,
        MSG_TIMER_TIMEOUT,
        MSG_UART_RX
    } MessageType;

    // 消息结构体
    typedef struct {
        MessageType type;  // 消息类型
        uint8_t data;      // 消息数据
    } Message;

(2) 消息缓冲区

#define MSG_QUEUE_SIZE 32

static Message msgQueue[MSG_QUEUE_SIZE];  // 消息队列
static uint8_t msgQueueHead = 0;          // 队列头
static uint8_t msgQueueTail = 0;          // 队列尾


http://www.kler.cn/a/569801.html

相关文章:

  • 《机器学习数学基础》补充资料:线性变换和最小二乘
  • 【Go语言快速上手】第一部分:数据类型(数组、切片、映射)与控制语句
  • 【JAVA-数据结构】枚举
  • Storm实时流式计算系统(全解)——中
  • TCP的三次握⼿中为什么是三次?为什么不是两 次、四次?
  • 数据可视化02-PCA降维
  • 【推荐项目】023-游泳俱乐部管理系统
  • 解决Java项目中Maven爆红,三方包下载不下来的问题
  • 基于单片机和C#的电压监测系统设计
  • Docker 学习(一)
  • 如何在 FastAdmin 中实现自定义主题设计
  • 比较Spring AOP和AspectJ
  • Qt QScrollArea 总结
  • iOS UIGestureRecgonizer自动化点击埋点
  • 计算机毕设JAVA——某高校宿舍管理系统(基于SpringBoot+Vue前后端分离的项目)
  • MySql面试总结(一)
  • 鸿蒙自定义组件预览
  • linux 后台执行并输出日志
  • STM32中使用PWM对舵机控制
  • 如何在Python用Plot画出一个简单的机器人模型