- ADC读取电压和USART串口输出这几天做实习程序开发,遇到了一些和ADC和USART的相关问题,做个记录。如果有错误也请各位大佬批评指正! 环境芯片型号:STM32G070CubeMX生成Keil工程后使用VSCode配合Keil Assistant插件共同编程并build下载SSCOM、波特律动助手(serial.keysking.com) 需求很简单:小灯以640ms为周期闪烁每20... ADC读取电压和USART串口输出这几天做实习程序开发,遇到了一些和ADC和USART的相关问题,做个记录。如果有错误也请各位大佬批评指正! 环境芯片型号:STM32G070CubeMX生成Keil工程后使用VSCode配合Keil Assistant插件共同编程并build下载SSCOM、波特律动助手(serial.keysking.com) 需求很简单:小灯以640ms为周期闪烁每20...
- 做 STM32 项目时,最让人困惑的一类故障是:明明把某个中断的优先级设得很高,关键时刻它却迟迟不响应,反而是低优先级的中断先跑了。查代码,优先级数字没写错;查手册,中断确实使能了。问题往往不在某一个优先级数值上,而在优先级分组(Priority Grouping)上——分组一旦配错,所有优先级数字的含义都会变。一、一个典型故障场景一块 STM32F4 板子上有两个中断:串口接收中断负责收不... 做 STM32 项目时,最让人困惑的一类故障是:明明把某个中断的优先级设得很高,关键时刻它却迟迟不响应,反而是低优先级的中断先跑了。查代码,优先级数字没写错;查手册,中断确实使能了。问题往往不在某一个优先级数值上,而在优先级分组(Priority Grouping)上——分组一旦配错,所有优先级数字的含义都会变。一、一个典型故障场景一块 STM32F4 板子上有两个中断:串口接收中断负责收不...
- 一、问题现象:总线“死”在低电平上I2C 出问题时最典型的现场是:SCL 或 SDA 被拉低后不再释放,HAL_I2C_Master_Transmit 一直返回 HAL_BUSY 或 HAL_TIMEOUT,复位从机芯片也不一定恢复。初学者常把原因归结为“从机坏了”或“上拉电阻不对”,直接换芯片、换电阻,结果同一块板子隔几天又复现。真正的原因大多在时序与状态机层面:某一次传输在中途被打断,从... 一、问题现象:总线“死”在低电平上I2C 出问题时最典型的现场是:SCL 或 SDA 被拉低后不再释放,HAL_I2C_Master_Transmit 一直返回 HAL_BUSY 或 HAL_TIMEOUT,复位从机芯片也不一定恢复。初学者常把原因归结为“从机坏了”或“上拉电阻不对”,直接换芯片、换电阻,结果同一块板子隔几天又复现。真正的原因大多在时序与状态机层面:某一次传输在中途被打断,从...
- 做 STM32 项目时,看门狗是最容易“好心办坏事”的外设:不开,程序跑飞没人管;开了,喂狗时机算错,板子反而隔几秒自己复位一次。更让人困惑的是,独立看门狗(IWDG)和窗口看门狗(WWDG)明明都是看门狗,喂早了、喂晚了的后果却完全相反。本文把两者的超时计算、喂狗窗口和低功耗下的注意事项一次讲清。一、独立看门狗:只怕喂晚了,不怕喂早了。IWDG 由独立的低速时钟 LSI 驱动,即使主时钟停... 做 STM32 项目时,看门狗是最容易“好心办坏事”的外设:不开,程序跑飞没人管;开了,喂狗时机算错,板子反而隔几秒自己复位一次。更让人困惑的是,独立看门狗(IWDG)和窗口看门狗(WWDG)明明都是看门狗,喂早了、喂晚了的后果却完全相反。本文把两者的超时计算、喂狗窗口和低功耗下的注意事项一次讲清。一、独立看门狗:只怕喂晚了,不怕喂早了。IWDG 由独立的低速时钟 LSI 驱动,即使主时钟停...
- 在 STM32 裸机开发里,寄存器映射最常见的错误不是写错了某个位,而是把结构体的偏移算错了:代码看起来一切正常,读回来的却根本不是目标寄存器。本文从 GPIO 映射讲起,说明混宽寄存器为什么会“捣乱”,以及如何用保留字段和编译期断言把偏移锁死。 一、STM32 GPIO 结构体映射写法以 GPIOA 为例,STM32 的 GPIO 寄存器是连续排列的 32 位寄存器,基地址为 0x4800... 在 STM32 裸机开发里,寄存器映射最常见的错误不是写错了某个位,而是把结构体的偏移算错了:代码看起来一切正常,读回来的却根本不是目标寄存器。本文从 GPIO 映射讲起,说明混宽寄存器为什么会“捣乱”,以及如何用保留字段和编译期断言把偏移锁死。 一、STM32 GPIO 结构体映射写法以 GPIOA 为例,STM32 的 GPIO 寄存器是连续排列的 32 位寄存器,基地址为 0x4800...
- 在 STM32 裸机开发里,几乎每个外设驱动都会写到 volatile:定义寄存器、轮询标志位、写中断标志。但不少初学者只把它当成“固定写法”,并不清楚去掉它会出什么问题。本文从编译器优化的角度讲清楚 volatile 到底保证了什么、不保证什么,以及在 STM32 工程里的三条使用边界。一、先看一个最典型的翻车现场假设用轮询方式等串口发送完成,代码写成这样:#define USART1_S... 在 STM32 裸机开发里,几乎每个外设驱动都会写到 volatile:定义寄存器、轮询标志位、写中断标志。但不少初学者只把它当成“固定写法”,并不清楚去掉它会出什么问题。本文从编译器优化的角度讲清楚 volatile 到底保证了什么、不保证什么,以及在 STM32 工程里的三条使用边界。一、先看一个最典型的翻车现场假设用轮询方式等串口发送完成,代码写成这样:#define USART1_S...
- STM32 定时器输入捕获测频:边沿同步与溢出处理的工程细节用 STM32 测外部信号频率,最省资源的办法不是进中断数脉冲,而是定时器的输入捕获(Input Capture):把被测信号接到 TIMx_CHx,硬件在跳变边沿自动把 CNT 寄存器的值锁存到 CCRx 里,软件只需要在中断里做两次捕获值的差分。听起来简单,实际工程里有三个容易翻车的地方。 1. 捕获时钟与分辨率的取舍输入捕获... STM32 定时器输入捕获测频:边沿同步与溢出处理的工程细节用 STM32 测外部信号频率,最省资源的办法不是进中断数脉冲,而是定时器的输入捕获(Input Capture):把被测信号接到 TIMx_CHx,硬件在跳变边沿自动把 CNT 寄存器的值锁存到 CCRx 里,软件只需要在中断里做两次捕获值的差分。听起来简单,实际工程里有三个容易翻车的地方。 1. 捕获时钟与分辨率的取舍输入捕获...
- 采样率至少是信号最高频率的 2 倍——奈奎斯特只是理论下限。本文从抗混叠滤波器的过渡带出发,算清 ADC 采样率的余量到底该留多少,并说明过采样 + 数字滤波为什么是更便宜的正确解。 采样率至少是信号最高频率的 2 倍——奈奎斯特只是理论下限。本文从抗混叠滤波器的过渡带出发,算清 ADC 采样率的余量到底该留多少,并说明过采样 + 数字滤波为什么是更便宜的正确解。
- STM32 ADC 多通道扫描 + DMA 采集时采样值跳变?本文总结三个最常见的坑:采样时间不足导致通道串扰、DMA 循环模式半传输中断与数据宽度/长度对齐、参考电压(VDDA)噪声与去耦,并给出 HAL 关键代码与 VREFINT 软件校准方法。 STM32 ADC 多通道扫描 + DMA 采集时采样值跳变?本文总结三个最常见的坑:采样时间不足导致通道串扰、DMA 循环模式半传输中断与数据宽度/长度对齐、参考电压(VDDA)噪声与去耦,并给出 HAL 关键代码与 VREFINT 软件校准方法。
- FreeRTOS 软件定时器学习笔记:定时器服务任务的工作方式、单次与周期两种模式、常用 API、精度边界,以及最重要的坑——回调函数里绝不能阻塞。附软体机器人项目中的心跳与通信超时看门狗用法。 FreeRTOS 软件定时器学习笔记:定时器服务任务的工作方式、单次与周期两种模式、常用 API、精度边界,以及最重要的坑——回调函数里绝不能阻塞。附软体机器人项目中的心跳与通信超时看门狗用法。
- 系统学习 FreeRTOS 后整理的任务、队列、信号量辨析笔记:任务按节拍拆、数据走队列、事件走信号量,外加一次优先级反转的踩坑记录。 系统学习 FreeRTOS 后整理的任务、队列、信号量辨析笔记:任务按节拍拆、数据走队列、事件走信号量,外加一次优先级反转的踩坑记录。
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签