- 博客(7)
- 收藏
- 关注
原创 4线无极编码开关的使用
本文介绍了一种四线制旋钮编码器的实现方案。该方案通过检测4根信号线的电平组合(共16种状态)来识别旋钮位置,使用映射表将端口值转换为实际位置。系统采用消抖处理确保稳定检测,并实现了环形计数逻辑来处理边界跳变(如15→0)。核心算法通过比较新旧位置差值判断旋转方向,当差值超过阈值时自动修正方向判断。该设计支持两种硬件模式(带/不带键盘),通过条件检查和状态机确保在允许条件下才进行通道切换,适用于需要精确位置检测的旋钮控制系统。
2025-08-08 13:20:29
586
原创 M4内核平台,将内存池纳入UCOS-III操作系统和管理的使用案例
本文摘要介绍了一个基于uCOSII操作系统的内存管理模块实现,主要包含以下功能: 实现了多分区内存池管理,支持7种不同大小的内存块(16B-4KB) 提供内存申请(MemGetBuffer)和释放(MemFreeBuffer)接口,自动匹配最合适的内存块大小 包含内存清0(MemClr)和设置(MemSet)功能,确保内存操作安全 通过地址范围检查确保操作在合法RAM空间内 支持内存调试模式(MEM_DEBUG) 该模块采用静态预分配方式,通过内存池表(gMemPoolInfoTbl)管理不同大小的内存块,
2025-08-05 13:52:10
1243
原创 基于C语言双向链表的菜单框架
本文详细介绍了菜单系统的设计规格及实现方法,主要内容包括: 菜单类型分类 固定菜单(条目数量固定) 动态菜单(条目数量由数据决定) 混合菜单(固定+动态结合) 输入菜单(如短信编辑) 核心数据结构 菜单表(MenuTable_t)和菜单项(MenuItem_t)定义静态结构 菜单管理表(MenuManageTable_t)管理菜单链表 菜单链表(MenuManageList_t)组织菜单节点 菜单节点(MenuIterator_t)存储菜单基本属性和方法 继承关系设计 采用面向对象思想,通过BrowseMe
2025-07-29 14:00:41
1514
原创 FSMC接口点亮16bit的8080并口屏
芯片是STM32F103VET6 LCD驱动IC是ST7789S。与FSMC功能会有冲突,暂时不用。与FSMC功能会有冲突,暂时不用。LCD数据线bit10。LCD数据线bit11。LCD数据线bit12。LCD数据线bit13。LCD数据线bit14。LCD数据线bit15。LCD数据线bit4。LCD数据线bit5。LCD数据线bit6。LCD数据线bit7。LCD数据线bit8。LCD数据线bit9。LCD数据线bit0。LCD数据线bit1。LCD数据线bit2。LCD数据线bit3。
2025-07-25 11:27:11
283
原创 KXTJ3三轴加速度计的简单应用
KXTJ3-1057是一款三轴MEMS加速度计,采用±2g/±4g/±8g/±16g多量程设计,基于差分电容检测原理。该器件采用2×2×0.9mm LGA封装,工作电压1.71V-3.6V,具有低功耗特性(待机0.9μA)和可配置输出数据速率(0.781Hz-1600Hz)。通过I²C接口通信,支持8/12/14位分辨率模式,内置电压调节器确保供电波动时的性能稳定。应用代码展示了加速度数据采集、倾斜检测(30°/45°/60°阈值)及状态机处理逻辑,实现跌倒检测功能。器件提供自检功能,典型应用包括姿态识别和
2025-07-24 14:36:21
944
原创 STM32的串口空闲中断+DMA传输方式+环形缓存,接收不定长数据
串口通信优化方案比较:本文对比了两种串口数据接收方案。传统串口中断+定时器方式适合低速小数据场景,但频繁中断会增加CPU负担;而串口空闲中断+DMA方案通过硬件检测空闲状态自动搬运数据,更适合高速大数据传输。文章详细介绍了后者结合环形缓存的实现方法,包括硬件配置、双缓存/环形缓存机制比较,并给出了MCU与蓝牙通信的完整案例代码。最后针对蓝牙模块增益调节指令中的BUG提供了修正方案,解决了16进制数值转换问题。方案选择应基于实际场景:资源受限系统可选定时器中断,高速通信推荐空闲中断+DMA。
2025-07-23 10:43:00
665
原创 【C语言位域结构体:当工程代码中有大量的布尔类型的标志位时,如何集中管理标志位】
本文介绍了一种高效的标志位管理方法——联合位域法。该方法通过联合(union)和位域(bit-field)技术,将多个布尔标志位紧凑地存储在一个字节中,既节省内存又便于操作。文中给出了UnionByte、UnionWord和UnionDword三种联合体定义,展示如何将8位、16位和32位数据划分为单个标志位。通过定义全局变量g_BitArrayVal数组,可将项目中的多个标志位集中管理,使用宏定义使位操作更直观。这种方法相比传统方式更节省内存(一个字节可存储8个标志位),且避免了分散定义标志位的问题,提高
2025-07-21 14:10:58
481
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅