Advertisement

QP 框架下 dpp 代码迁移至 正点原子战舰

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:ZIP


简介:
基于QP框架的dpp程序通过移植到正点原子战舰系统中,该系统不仅支持的上位机qspy功能,同时具备qview界面设计。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • QP dpp
    优质
    基于QP框架的dpp程序通过移植到正点原子战舰系统中,该系统不仅支持的上位机qspy功能,同时具备qview界面设计。
  • QP是一个量,是一种基于状态机的嵌入式构。将QF、QV及QSpySTM32F103上
    优质
    QP(Quantum Programming)是一个创新的基于状态机的嵌入式软件架构,通过量子跃迁的概念优化系统设计与实现。本文档详细记录了将QP框架的核心组件QF、QV及其调试工具QSpy成功移植到正点原子战舰STM32F103平台的过程与经验。 QP是一个基于状态机的嵌入式架构,它将qf、qv以及qspy移植到了正点原子战舰STM32F103上。
  • STM32的QP植.zip
    优质
    本资源包包含了STM32微控制器上QMosaic有限状态机框架的移植代码和示例程序,适用于嵌入式系统开发人员进行高效的状态机设计。 为了在STM32F103单片机上使用正点原子战舰V3开发板成功移植QP(QP框架),需要按照以下步骤搭建: 定义队列长度: ```cpp #define RED_QUEUE_LEN 3 #define BLUE_QUEUE_LEN 3 ``` 事件池大小为红色和蓝色队列的总和: ```cpp #define TACKER_EVENT_POOL_LEN (RED_QUEUE_LEN + BLUE_QUEUE_LEN) ``` 声明静态变量用于存储队列和事件池: ```cpp static QEvt const * l_redQueueSto[RED_QUEUE_LEN]; // 红色事件队列 static QEvt const * l_blueQueueSto[BLUE_QUEUE_LEN]; // 蓝色事件队列 // 事件池,包含所有可能的信号和状态信息 static LedEvt LedEvtPoolSto[TACKER_EVENT_POOL_LEN]; // 订阅列表初始化 static QSubscrList SubSrcSto[MAX_PUB_SIG]; ``` 定义Led信号枚举: ```cpp enum LedSignals{ START_SIG = Q_USER_SIG, KEY0_SIG, KEY1_SIG, KEY2_SIG, KEYUP_SIG, ALL_OFF_SIG, ONLY_BULE_SIG, ONLY_RED_SIG, ALL_ON_SIG, MAX_PUB_SIG }; ``` 定义Led事件结构: ```cpp typedef struct LedEvtTag{ QEvt super_; // 超类指针,用于继承自QF框架中的基础类型 uint16_t uiParaH; uint16_t uiParaL; }LedEvt; // 发布信号的函数 void PublishLedEvt(uint16_t uiSig, uint16_t uiParaH, uint16_t uiParaL) { LedEvt* peTacker = Q_NEW(LedEvt, uiSig); peTacker->uiParaH = uiParaH; peTacker->uiParaL = uiParaL; QF_publish((QEvt*)peTacker); // 发布事件到QP框架 } ``` 初始化步骤: ```cpp // 初始化时间管理器、活动对象查找表和优先级集合 QF_init(); // 为订阅列表初始化内存池 QF_psInit(SubSrcSto, Q_DIM(SubSrcSto)); // 初始化事件池内存分配 QF_poolInit(LedEvtPoolSto,sizeof(LedEvtPoolSto),sizeof(LedEvtPoolSto[0])); RedLed_Start(uiPrio++, l_redQueueSto, Q_DIM(l_redQueueSto), 0, 0); // 创建红色活动对象 BlueLed_Start(uiPrio++, l_blueQueueSto, Q_DIM(l_blueQueueSto), 0, 0); ``` 定义红色LED的活动类型: ```cpp typedef struct RedActiveTag{ QActive super_; volatile uint16_t RedLedStateNow; // 红色LED当前状态 uint16_t a; uint16_t b; }RedActive; extern RedActive RedLed; // 外部声明 // 初始化红色活动对象的实例化函数 void RedLed_Start(uint_fast8_t prio, QEvt const *qSto[], uint_fast16_t qLen, void *stkSto, uint_fast16_t stkSize) { RedLed_Ctor(&RedLed); // 创建一个线程并开始管理活动对象 QActive_start((QActive*)&RedLed;, prio, qSto, qLen, stkSto, stkSize); } // 初始化红色LED的状态机基础类和初始状态 void RedLed_Ctor(RedActive* me) { QActive_ctor(&me->super_, (QStateHandler)RedLed_Initial); // 设置当前状态为0,具体实现可以根据需要调整 me->RedLedStateNow = 0; } ``` 以上步骤确保了QP框架在STM32F103单片机上的正确初始化和事件发布。
  • _V3_NES游戏机源
    优质
    正点原子_战舰V3_NES游戏机源码提供了一套详细的NES(Nintendo Entertainment System)游戏机硬件模拟器代码,适用于战舰V3开发板。此项目旨在帮助嵌入式系统开发者深入理解经典游戏系统的内部工作原理,并通过实际编程实践提升其动手能力和创新能力。 从正点原子_战舰V3的光盘分离出来的NES游戏机源代码包含了NES的基本功能,但不仅仅是这些。还包括了MDK工程文件以及基于STM32F4的开发内容。
  • STM32F1V3版 STM32F103ZET6 RT-Thread与STemWin
    优质
    本项目专注于基于STM32F103ZET6微控制器的正点原子STM32F1战舰V3板,深入讲解并实现RT-Thread实时操作系统及STemWin图形库的高效移植。 移植这玩意儿有很多坑,硬件基于4531 320 * 240屏幕。网上基本找不到基于正点原子F1的例程。
  • STM32F103PCB工程.zip
    优质
    本资源包为正点原子STM32F103系列单片机战舰开发板的PCB设计文件,适用于电子工程师和嵌入式开发者进行电路板生产和硬件调试。 正点原子STM32F103_战舰PCB工程包含了详细的硬件设计资料和相关文档,适用于进行嵌入式开发的学习与实践。项目中使用了高性能的STM32微控制器,并配备了丰富的外设资源,适合初学者快速上手并深入研究。
  • STM32开发指引
    优质
    《正点原子STM32战舰开发指引》是一本专注于STM32微控制器实战编程与项目开发的技术手册,旨在帮助初学者及进阶工程师快速掌握STM32硬件特性及其应用技巧。书中通过详细的实例和讲解,引领读者深入理解并实践STM32系列芯片的开发流程和技术要点,助力开发者构建高效、稳定的嵌入式系统解决方案。 ### 正点原子STM32战舰开发指南关键知识点概览 #### 一、开发板概述 **ALIENTEK战舰STM32开发板**是一款功能全面且资源丰富的嵌入式平台,专为学习STM32微控制器及其实验项目设计。该开发板集成了多种常用接口和外设,并提供了详尽的技术文档和支持,帮助开发者快速上手并进行深入探索。 #### 二、硬件资源 1. **MCU**: 使用高性能的STM32系列微控制器作为核心处理器。 - 特性包括高速运算能力、低功耗特性及广泛的外设支持等。 - STM32系列覆盖了从低端到高端的各种型号,满足不同应用场景的需求。 2. **引出IO口**: 提供丰富的GPIO接口用于连接各种外设或扩展功能。 - GPIO接口通常用于数字信号的输入输出,并支持PWM输出等功能。 3. **USB串口选择接口**: 支持USB转串口通信及标准串口通信,便于数据传输和调试。 - USB转串口模块可以实现与PC机或其他设备的数据交互。 - 串口1主要用于与其他串行设备进行通信。 4. **JTAGSWD**: 支持JTAG调试接口和SWD调试接口,用于程序下载和硬件调试。 - JTAG是一种国际标准测试协议,用于芯片内部测试及在线编程。 - SWD是STM32特有的调试接口,占用更少的引脚资源。 5. **SRAM**: 配备额外的静态随机存取存储器(SRAM),扩展主控芯片内存容量。 - SRAM具有读写速度快、掉电后不丢失数据的特点,适用于需要频繁访问的小型程序。 6. **LCDOLED模块接口**: 支持连接LCD或OLED显示屏,用于显示文字和图像等信息。 - LCD与OLED显示器在功耗及显示效果等方面有所不同,可根据具体应用场景选择合适的显示方式。 7. **复位电路**: 设计有专用的复位电路以确保系统稳定运行。 - 复位电路对于系统的可靠性和稳定性至关重要,能够有效避免因电压波动等问题导致的系统异常。 8. **启动模式设置接口**: 可通过特定跳线设置不同的启动模式(如从Flash、SRAM或内置ROM启动)。 - 不同的启动模式适用于不同开发阶段和应用场景,提供了灵活性。 9. **RS232RS485接口**: 支持两种常见的串行通信标准,适用于长距离通信及多点通信网络。 - RS232用于点对点通信,传输距离较短。 - RS485支持多点通信,传输距离更远。 10. **CANUSB接口**: CAN总线接口支持车载网络通信;USB接口提供高速数据传输功能。 - CAN广泛应用于汽车电子领域,用于实时控制和故障诊断。 - USB则常用于数据传输及供电。 11. **EEPROM**: 集成外部EEPROM存储器,用于保存非易失性数据。 - EEPROM具有非易失性和可电擦除重写的特点,适合保存设置参数等信息。 12. **游戏手柄接口**: 支持连接游戏手柄等输入设备,可用于游戏开发等领域。 - 游戏手柄通常包括多个按键和模拟摇杆,可以实现复杂的游戏控制功能。 13. **SPI FLASH**: 配备SPI接口的闪存芯片,用于存储程序代码或数据。 - SPI FLASH具有读写速度快、可靠性高等优点。 14. **3D加速度传感器**: 内置3轴加速度传感器,可用于姿态检测和运动控制。 - 3D加速度传感器可以测量三维空间内的加速度变化,常用于手势识别及运动追踪等领域。 15. **温湿度传感器接口**: 支持连接温湿度传感器以进行环境监测。 - 温湿度传感器广泛应用于智能家居、农业自动化等领域。 16. **红外接收头**: 支持有线通信功能,可以接收遥控器等设备发送的信号。 - 红外接收头常用于家电控制及安防监控场景。 17. **无线模块接口**: 支持连接Wi-Fi、蓝牙等多种无线通信模块以拓展无线通信能力。 - 无线通信模块使开发板具备远程通讯的能力,适用于物联网应用。 18. **LED**: 配备多个LED指示灯用于状态指示。 - LED可以直观地反映系统的运行状态。 19. **按键**: 配置了多个机械按键以实现用户输入或功能切换。 - 按键是人机交互的基本组件之一。 20. **TPAD电容触摸按键**: 支持电容触控
  • _V3_标准示范程序
    优质
    正点原子_战舰V3_标准示范程序提供基于战舰V3开发板的标准例程与教程,助力开发者掌握硬件特性和软件编程技巧,快速开展嵌入式项目开发。 正点原子战舰V3标准例程采用库函数版本,涵盖数码管、SPI等多个模块,共有50多个例程。
  • STM32F103ZET6版全套硬件资料
    优质
    本资源提供STM32F103ZET6正点原子战舰版本开发板的所有硬件文档和设计文件,涵盖原理图、PCB布局及元器件清单等,适合初学者与专业开发者深入学习使用。 STM32F103ZET6正点原子战舰版包含了MCU、液晶屏、SDK A、WiFi模块以及蓝牙等各种外设硬件的详细资料。
  • 基于STM32F103ZET6()的智能门锁
    优质
    本项目基于STM32F103ZET6微控制器设计实现了一款智能门锁系统,具备指纹识别、密码开锁及远程控制等功能,旨在提升家居安全与便利性。 1. 实现蓝牙发送密码与指纹开锁功能: - 通过ILI9341显示屏显示选择使用指纹解锁或蓝牙发送密码解锁的指令。 - 当连续三次输入错误的密码时,系统将禁止操作20秒。 - 操作出现失误后,提示性语句会显示在ILI9341屏幕上。 2. 开锁成功后可进行以下功能: - 通过ILI9341显示屏指示修改密码或对存储指纹的操作指令。 - 修改密码时需要连续输入两次相同的密码才能完成更改。 - 在选择对已存储的指纹操作之后,会提示用户选择添加、对比、删除指定指纹或清空所有指纹库。 具体功能如下: - 添加新指纹:系统需连续识别同一用户的指纹两次,并确认一致后将其存入数据库中。 - 对比现有指纹:通过扫描手指获取信息并与数据库中的记录进行匹配。若成功,则返回该用户对应的唯一标识符;反之,提示无对应指纹存在。 - 删除特定的指纹数据:发送相应的指纹ID给设备,在找到与之关联的信息时予以删除。 - 清空所有存储的数据:将整个指纹库清空至空白状态。 以上功能均通过蓝牙指令实现,并且在执行过程中会有明确的操作指引显示于ILI9341显示屏上。