自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 嵌入式AT设备驱动框架(链表管理+事件驱动)

AT设备的结构体应该包含UART的实例,这样每个AT设备可以关联到特定的串口。设备层和驱动层分离意味着驱动层处理具体的硬件操作,而设备层处理AT指令和协议。例如,驱动层的UART结构体可能有发送和接收的函数指针,而设备层的AT设备结构体则包含初始化、发送AT指令等方法。然后,链表管理这些设备。需要创建一个链表节点结构,每个节点包含一个AT设备实例和指向下一个节点的指针。这样,可以方便地遍历和管理多个设备。事件驱动模型需要设计一个事件队列,处理各种异步事件,比如数据接收完成、网络事件等。

2025-03-29 12:04:05 416

原创 STM32启动流程深度解析(地址映射,中断向量表,堆栈区,静态区(APP的构成、中断向量表跳转偏移,变量的生命周期、作用域和存储位置、晶振锁相环的掉电复位重整定流程))

解析STM32的启动流程,包括地址映射、中断向量表、堆栈区、静态区这些部分,还有APP的构成、中断向量表跳转偏移,变量的生命周期、作用域和存储位置,以及晶振和锁相环在掉电复位后的重整流程。首先,STM32启动流程。我记得启动过程一般分为几个阶段:上电复位、从启动地址加载SP和PC、初始化系统时钟、设置中断向量表,然后进入main函数。地址映射方面,STM32的Flash起始地址是0x08000000,而RAM的起始地址是0x20000000。

2025-02-19 16:06:12 1720

原创 面向对象编程思想--UART设备(AT AND Modbus)

接上篇没写完的文章,面向对象编程思想--UART设备(Modbus AND AT)-优快云博客通过区分不同协议统一的事件处理入口共用底层缓冲区管理三、安全机制四、性能优化五、诊断接口六、实际应用开发举例比如说AT指令处理框架和Modbus主站实现(部分)协议自动识别

2025-02-19 08:39:13 347

原创 面向对象编程思想--UART设备(Modbus AND AT)

现在设计一个UART设备的驱动框架,针对AT指令模块和Modbus协议。要整合状态机、时间窗机制,同时满足各种AT指令设备的需求,并且考虑Modbus的解析。首先,AT指令设备包括ESP32、NB-IoT模块、4G模块等,这些都是通过UART使用AT指令控制的。另外还需要支持Modbus协议,所以框架需要兼容不同协议。AT指令通常需要状态机来处理异步响应,比如发送AT命令后等待OK或ERROR。同时,多个模块可能同时使用UART,需要考虑如何管理并发请求,需要队列机制。

2025-02-18 22:59:15 993

原创 面向对象编程思想--SPI设备(Norflash、RFID、LCD屏幕)

包括SPI设备的片选信号管理,每个设备可能有不同的CS引脚,所以在设备结构体中需要包含GPIO的控制。例如,NorFlash通常需要读写数据块,RC522是RFID读卡器,涉及特定的命令和数据处理,而LCD屏幕可能需要发送大量的显示数据,可能涉及不同的传输模式(如DMA)。总结一下,所抽象的结构体应该包括:SPI驱动结构体、设备基类结构体、具体设备结构体(NorFlash、RC522、LCD)、驱动层实现、设备层实现、事件处理等等,注意SPI特有的配置和操作,比如片选控制和传输模式。

2025-02-18 19:22:01 889

原创 面向对象编程思想--IIC设备(EEPROM AND MPU6050)

而设备层则代表具体的设备,如EEPROM,每个设备结构体应包含驱动层的指针,以及设备特定的属性和方法。遇到的问题:IIC的读写需要考虑设备地址、寄存器地址的位数,比如EEPROM可能有分页,需要处理地址的高低位。设备结构体则应包含设备类型、驱动指针、设备特定的操作函数,以及链表节点指针。我将驱动层和设备层分开,用结构体封装设备和驱动,并通过链表管理和事件驱动模型操作具体设备,比如EEPROM和MPU6050,以STM32F103为例。确保驱动层与设备层的分离,设备操作封装在设备结构体中,通过函数指针调用。

2025-02-18 18:25:07 927

原创 【嵌入式软件开发利器】串口接收不定长数据并结合DMA实现环形缓冲区(应用、双线程的同步、空闲中断、串口通信设计、DMA半满全满与空闲中断结合)--以STM32F10x为例

/ 数据缓冲区// 读指针// 写指针// 缓冲区大小// DMA传输状态标志。

2025-02-17 12:57:55 1352

原创 零拷贝队列(原理、实现方式、应用场景、数据一致性、实际开发二重指针应用)--嵌入式开发利器

一、零拷贝原理2所谓零拷贝队列,就是减少数据在内存中的复制次数,提高效率。那零拷贝队列应该是在队列操作中避免数据拷贝,通过指针或引用来传递数据,而不是复制数据本身。这样的话,生产者和消费者可以直接访问同一块内存区域,减少CPU和内存的开销。那么如何实现呢?我的思路是使用环形缓冲区(Ring Buffer)或者循环数组来管理数据。生产者和消费者通过头尾指针来操作队列,写入和读取时不需要复制数据,只是移动指针。但这个过程需要注意线程安全,所以可能需要用锁或者原子操作来保证同步。

2025-02-17 11:57:02 2461

原创 跨平台设备驱动框架设计(二)——UART/I2C/SPI/ADC/TIMER/CAN驱动实现

device_ops。

2025-02-16 17:57:21 395

原创 跨平台设备驱动框架设计(一)

设计一个跨平台的设备驱动框架,支持不同的硬件平台和操作系统,同时提供统一的API接口。参考Linux的驱动模型,使用面向对象的思想,并通过链表管理外设设备。我想要一个类似于Linux的设备驱动框架,这样无论底层是裸机、FreeRTOS还是Linux,上层应用都能使用相同的接口进行开发。这需要抽象出统一的设备模型,每个外设作为设备对象注册到框架中,并通过链表管理。驱动和设备的匹配机制类似于Linux的platform bus模型,驱动通过匹配设备树或ID来绑定设备。接下来,要设计设备结构体和驱动结构体。

2025-02-16 14:24:07 1068

原创 裸机任务调度框架(时间片轮询 + 事件驱动混合调度)

框架还不够完美,仍需优化,继续改进,期待下一篇哟。混合调度(时间片轮询 + 事件驱动)时间片轮询:确保周期性任务(如传感器采集)按时执行。事件驱动:快速响应外部中断(如按键、通信)。优先级控制:通过排序实现简单优先级调度。

2025-02-16 11:11:56 3383

原创 面向对象编程思想--GPIO设备_V1.1(增加链表管理多类型GPIO设备)

接下来就是重头戏了,

2025-02-16 10:43:23 495

原创 面向对象编程思想--GPIO设备(事件驱动模型)

1. 抽象GPIO设备:LED可能需要设置颜色、亮度(比如PWM控制),风扇可能需要调节速度,按键则涉及短按、长按等事件。每个设备的功能不同,所以结构体需要包含通用的GPIO信息,比如引脚、模式,同时也要有设备特定的操作和属性。2. 事件结构体:按键的事件类型较多,包括短按、长按、双击等,而LED和风扇可能需要不同的事件,比如状态改变或者参数调整。事件结构体需要能够携带不同类型的数据,比如按键的事件可能需要按键ID和事件类型,而LED事件需要颜色值或亮度值。

2025-02-15 19:05:34 1882

原创 基于Systick和DWT内核实现高精度延时(推荐DWT,裸机和RTOS都可以用)

注意:SysTick通常配置为固定的频率,比如1ms中断一次,但这里可能需要用轮询方式来实现更灵活的延时。而DWT的CYCCNT是一个32位的计数器,随主频递增,适合高精度延时,但需要先启用这个功能。注意:SysTick可能在中断中使用时会影响系统,而DWT的CYCCNT不需要中断,但可能在某些芯片上不可用,或者需要特定配置。

2025-02-15 15:47:30 1284

原创 状态机+时间窗---按键检测终极篇(多按键、多操作)

/ 消抖时间(单位:ms)// 长按判定时间// 双击/三击时间窗口。

2025-02-14 21:19:42 1770

原创 总结按键消抖的几种方式(推荐:状态机)

在检测到按键状态变化后,延时一段时间(通常10~20ms),再次检测按键状态,如果状态一致则认为按键有效。

2025-02-14 00:05:48 1403

原创 Python读取串口hex数据包并处理

可获取到中间数据,如果需要将十六进制数据转换为字节串,可以使用bytes.fromhex()方法。其中53 59为该数据帧帧头,54 43为数据帧帧尾。该数据包来自60G毫米波呼吸睡眠雷达数据。

2024-03-03 11:49:27 1508 1

原创 STM32连接OV2640摄像头串口方式在PyQt5界面上展示视频界面 以及使用MQTT方式进行展示

STM32+OV2640 视频源 接入AI模型

2023-03-20 17:50:26 6011 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除