
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文系统讲解了嵌入式开发中按键处理的全链路技术。首先分析了GPIO按键成为主流方案的原因:硬件简单、抗干扰强、响应快、成本低。接着深入探讨了按键抖动的物理根源及其影响,并对比了硬件RC滤波和软件消抖(延时法、定时器采样法、状态机法)的实现方案。最后介绍了按键处理的演进方法:从基础的轮询扫描到中断驱动结合事件队列的高级方案,重点展示了状态机实现短按/长按/双击识别的代码示例。通过硬件原理、消抖处理到

LCD背光已普遍采用LED,CCFL基本淘汰;OLED烧屏可通过像素位移缓解。通过场景化选型与精准的驱动实现,可显著提升嵌入式设备的显示体验与交互可靠性。:根据成本、功耗、显示性能、交互需求综合选型。,而是独立传感器层,

摘要:本文对比了STM32四种延时方式:毫秒级延时(bsp_DelayMS)适用于简单任务;微秒级延时(bsp_DelayUS)精度高但CPU占用100%;软件定时器系统支持多任务管理;硬件定时器中断(TIM2-TIM5)提供高精度不阻塞的解决方案。重点指出bsp_DelayUS长时间使用会完全占用CPU,建议改用硬件定时器。针对不同应用场景给出了使用建议,包括DHT11传感器读取和多任务系统定时

系统滴答定时器(SysTick)是ARM Cortex-M内核内置的24位递减计数器,主要用于精确延时和时间基准服务。本文解析了SysTick的基本原理和结构,包括其24位递减计数机制、自动重载特性及关键寄存器配置。重点讨论了两种延时实现方式:阻塞式通过轮询COUNTFLAG标志实现简单延时,非阻塞式利用中断机制避免CPU空转。同时分析了不同时钟源选择对精度的影响,以及在实际应用中需注意的延时与中

摘要: ARM Linker错误L6200E通常由全局变量在头文件中重复定义引起。示例中,shared.h直接定义变量导致main.o和sensor.o各自生成变量副本,链接时冲突。正确做法是:1)在头文件用extern声明变量(如extern uint32_t system_uptime_ms;);2)在单一源文件(如main.c)中定义变量。遵循"头文件声明,源文件定义"原
I/O 端口的默认状态在复位期间及复位刚刚完成后,复用功能尚未激活,I/O 端口被配置为输入浮空模式。这意味着即使没有进行 GPIO 配置,ADC 仍然可以从这些引脚读取数据。然而,这种模式下,引脚的电平状态可能不稳定,容易受到外部干扰。浮空输入模式的特性浮空输入模式下,引脚未连接到任何外部电路,处于高阻态,电平状态不确定。这种方式下,引脚可能因为干扰信号的存在而产生误触发,因此应尽量避免使用。模

输入输出压差(Dropout Voltage)线性调整率(Line regulation)负载调整率(Load Regulation)电源抑制比(PSRR)瞬态响应(Transient response)静态电流(Supply Pin Current )1. 输入输出压差(Dropout Voltage)2. 线性调整率(Line regulation)线性调整率衡量了LDO(低压差线性稳压器)在

当外部中断检测到引脚电平变化时,正常的流程是选择触发中断,但是在STM32中,也可以选择触发一个事件,如果选择触发事件,那外部中断的信号就不会通向CPU了,而是通向其它外设,用来触发其它外设的操作,比如触发ADC转换、触发DMA等。,是CPU的小助手。STM32的中断非常多,如果把这些中断全都接到CPU上,那CPU还得引出很多线进行适配,设计上就很麻烦,并且如果很多中断同时申请,或者中断很多产生了

单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us( )和毫秒级delay_ms( )。

为什么在72MHz计数时钟下可以实现最大59.65s的定时?72M/65536/65536,得到的是中断频率,然后取倒数,就是59.65秒多,大家可以自己算一下。详细解释:在定时器中,预分频器和计数器都是16位的,所以它们的最大值是65535,而不是65536。预分频器的最大值决定了计数时钟的频率,而计数器的最大值决定了定时器的最大计数周期。因此,如果预分频器和计数器的最大值都设置为65535,那








