
STM32 外设学习+项目实践
文章平均质量分 83
外设学习+项目实践
TianYaKe-天涯客
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
配置即代码的优化:JSON统一数据层与Jinja2模板引擎的架构重构
本文提出了一种基于JSON和Jinja2模板引擎的嵌入式配置解决方案,解决了传统XML方案存在的三大痛点:数据分散存储、模板与逻辑强耦合、数据冗余存储。新方案通过JSON统一数据层实现单一信源管理,消除同步风险;利用Jinja2模板引擎实现逻辑与表现分离,支持灵活扩展;通过统一引擎实现多格式高效输出。实践表明,该方案显著提升了开发效率和可维护性,为嵌入式开发工具平台化奠定了基础。原创 2025-07-21 23:48:13 · 1235 阅读 · 1 评论 -
配置驱动开发:初探零代码构建嵌入式软件配置工具
本文探讨了自动代码生成工具在软件开发中的应用价值与实践经验。作者以STM32外设初始化为例,展示了如何通过配置驱动开发替代传统手写代码模式。核心方案采用三层架构:基于XMLSchema的配置模型层、实现UI与XML双向同步的数据绑定层,以及转换配置为目标代码的生成层。工具实现了动态UI渲染、寄存器位域映射和端口聚合优化等功能,显著减少了冗余代码。实践表明,自动代码生成特别适合模式化、低风险的重复性任务,可将开发重点转向创造性工作。文章还讨论了AI辅助工具链的潜力,指出未来开发将向"需求架构师&qu原创 2025-07-12 22:44:52 · 1905 阅读 · 2 评论 -
嵌入式调试LOG日志输出(以STM32为例)
摘要:本文介绍了一种基于STM32F103单片机的轻量级嵌入式日志系统设计。针对嵌入式系统资源受限和调试困难的特点,该系统实现了日志分级、格式控制、串口输出等核心功能。通过枚举定义TRACE至FATAL六个日志级别,支持动态配置输出格式(包含级别、时间戳、函数名/行号等要素),采用固定缓冲区避免内存占用。系统利用STM32 HAL库实现串口输出,并提供了注册接口和配置函数。测试表明,该系统能在不同阶段输出合适的调试信息,帮助开发者快速定位问题,同时保持较低的资源开销,适用于各类嵌入式开发调试场景。原创 2025-07-09 22:00:05 · 1553 阅读 · 0 评论 -
ARM-CortexM固件升级相关问题研究
STM32F4固件升级涉及内存分区、启动机制、通信协议、Flash操作、校验与验证、安全跳转和错误恢复等核心原理。IAP和APP在RAM使用上是分时的,不会同时占用,因此不会导致数据冲突。程序启动时,启动代码会初始化RAM,将Flash中的初始值复制到RAM中。STM32F4的启动文件负责初始化堆栈指针、设置中断向量表、执行复位处理等任务。在Keil中,fromelf --bin命令用于将可执行文件转换为二进制格式。固件头部信息应包含固件标识符、版本号、大小和CRC32校验码等,通常存放在应用程序固件的起始原创 2025-05-12 08:00:41 · 848 阅读 · 0 评论 -
利用AFE+MCU构建电池管理系统(BMS)
实际BMS项目中,可能会综合考虑成本、可拓展、通信交互等,用AFE(模拟前端)+MCU(微控制器)实现BMS(电池管理系统)。希望看到这篇博客的朋友能指出错误或提供改进建议。有纰漏请指出,转载请说明。学习交流请发邮件 [email protected]。原创 2025-02-16 22:01:40 · 4067 阅读 · 0 评论 -
几种单总线串口通信的分析及调试方法
正常情况下,该电路会出现自发自收的情况,导致通信不正常。同理,RXD接收数据时,总线为高电平时RXD为低电平,总线为低电平。总线上为低电平,当TXD发出低电平信号时,三极管Q2截止,由于上拉电阻的存在,此时。该电路中,数据通过TXD发出,当TXD发出高电平信号时,三极管Q2导通接地,此时。极管后将被取反,因此,总线上读出的数据是被取反后的数据,但是由于主机和从机都使。用了该串口转总线电路,实际接收到的数据是被取反了两次的数据,取反两次的数据和被。通信效果如下,粉色为从机的TXD,蓝色为从机的RXD。原创 2023-11-07 11:51:40 · 4137 阅读 · 0 评论 -
LCD单色图像显示的基础研究
最近用到了240*160的LCD屏,对于图像显示有一个基础研究,用的是单片机的RAM作为GRAM显存的方案。在任意位置显示任意大小的图像、字符。有纰漏请指出,转载请说明。学习交流请发邮件 [email protected]。原创 2024-09-11 18:12:41 · 1086 阅读 · 0 评论 -
188数码管轮询扫描
最近用到了188数码管,总结一下。188数码管,用5个IO,在不借助外部驱动芯片的情况下,可以点亮20个灯。188数码管广泛应用于电子烟、充电器、充电宝、DVD、高级音响、工业设备控制面板、医疗器械等多个领域,满足不同设备和场景的需求。有纰漏请指出,转载请说明。学习交流请发邮件 [email protected]。原创 2024-07-17 20:06:35 · 1787 阅读 · 0 评论 -
基于状态机的单片机编程(以按键状态转移为例)
在设计锂离子电池充电器时,对于以前的根据系统状态进行判断,置标志位的方法,会显得程序臃肿,且架构混乱,变量交错复杂,移植困难。所以结合实际项目,给出了一种基于状态机的编程方法。有纰漏请指出,转载请说明。学习交流请发邮件 [email protected]。原创 2023-12-09 19:21:33 · 1151 阅读 · 0 评论 -
IAP固件升级进阶(Qt上位机)
时隔近一年,再次接触IAP固件升级,这次修改了以前的一些bug,同时新增一些实用性的功能。有纰漏请指出,转载请说明。学习交流请发邮件 [email protected]。原创 2024-06-17 22:25:43 · 1559 阅读 · 1 评论 -
一阶RC低通滤波器(巴特沃斯滤波)
最近稍微研究了滤波器,想用模拟和数字的形式来简单理解一下,记录在这里。有纰漏请指出,转载请说明。学习交流请发邮件 [email protected]一阶滤波器(First-Order Filter)是滤波器的一种基本类型,其特点是在连续时间域或离散时间域中,滤波器的传递函数或差分方程具有一阶的形式。原创 2024-05-01 23:44:13 · 6965 阅读 · 0 评论 -
对单片机的一点理解
大一时学过一段时间的51单片机,后面就一直研究STM32和算法,最近工作搞51单片机有半年了,有一些自己的想法,跟公司的工程师也探讨了一些,结合聊天记录,写了这篇博客,希望对读者有帮助。有纰漏请指出,转载请说明。学习交流请发邮件 [email protected]。原创 2024-04-10 00:39:57 · 2638 阅读 · 9 评论 -
一种ADC采样算法,中位值平均滤波+递推平均滤波
在实际AD采集场景中,会出现周期性变化和偶然脉冲波动干扰对AD采集的影响这里使用中位值平均滤波+递推平均滤波的结合参考前人写好的代码框架,也参考博主GuYH_下面这篇博客,在此基础上稍作修改,写出这篇博客,能应用于实际项目。常用ADC采样数字滤波算法最全汇总!!!以后有机会,搞个上位机对比几种算法的优劣。有纰漏请指出,转载请说明。学习交流请发邮件 [email protected]。原创 2023-11-11 11:11:43 · 2114 阅读 · 0 评论 -
用静态顺序表方式实现的消息队列
之前挖的坑,今天可以实现了——“为了保证命令/数据一定能被执行,需要写一个消息队列(后面有空再写一下,给自己挖坑),当系统空闲时对命令/数据进行处理”。有纰漏请指出,转载请说明。学习交流请发邮件 [email protected]。原创 2023-08-30 20:22:56 · 182 阅读 · 0 评论 -
手写最简单的单片机操作系统
本文参考自网上各大神的代码,在此基础上做修改,写了一份更适合本人开发的裸机操作系统代码。后面还有很多地方需要完善,读者如有想法可以一起探讨。有纰漏请指出,转载请说明。学习交流请发邮件 [email protected]。原创 2023-08-27 12:51:44 · 1365 阅读 · 0 评论 -
单片机GPIO口模拟串口接收
做项目时,因为AT32F413CCU7串口不够用(已经用了3个串口),还有模块需要用到串口,所以做了一个模拟串口发送与接收的接口。用到的单片机外设有:GPIO定时器、外部中断。串口接收时不阻塞,但只存一帧数据(因为只对模块进行少量数据的读写,所以不做消息队列,用回调函数处理)串口发送时存在短暂阻塞(只发几帧数据,懒得去搞不阻塞的情况了)。因为是软件模拟,可能存在些许差错(波特率低时很少遇到,波特率高时需要调节定时器中断时间),所以拓展可以做字符串比较strncmp或者CRC校验。原创 2023-08-02 12:50:07 · 1825 阅读 · 1 评论 -
捕获多路PWM信号的周期、频率、占空比
缺点是不支持单片机GPIO同时触发高低电平的情况(相隔0.01us级别,会根据优先级而选择性屏蔽其他外部中断),而通过定时器同时输出的PWM信号可以检测。原创 2023-06-02 21:38:21 · 727 阅读 · 0 评论 -
按键检测:软件消抖+轮询检测+单双击及长按
在网上看到有用按键的软件消抖,但是基本上用的是delay函数,占用了CPU太多资源了,无法实现实时调用;高级一点的用定时器+外部中断的方式,但是无法实现单击、双击、长按功能。所以这里开发了一种功能,不占用太多CPU资源的同时实现轮询检测,且使用指针结构体,多个按键的情况下可复用性强、移植性强。本人使用的单片机芯片型号是STM32f103VET6有纰漏请指出,转载请说明。学习交流请发邮件[email protected]原创 2023-05-31 23:21:41 · 1322 阅读 · 0 评论 -
通俗理解TIM定时器并简单使用
stm32有3种定时器,分别是基本定时器、通用定时器、高级定时器。原创 2023-03-09 23:47:23 · 8139 阅读 · 1 评论 -
嵌入式软件面试小结
本文章是我面试了几家公司后的嵌入式软件面试小结,也为我以后面试其他嵌入式岗位打下基础。分为C语言、ARM开发等。有纰漏请指出,转载请说明。学习交流请发邮件。原创 2023-03-06 18:17:44 · 455 阅读 · 0 评论 -
怎么操作SD卡——从底层到FAT文件系统
跟在FLASH上挂载FAT32文件系统一样,只需要底层提供给FatFs组件层一些数据操作的相关接口函数(放在bsp板级支持包里,即SD卡初始化、读状态、数据擦除、数据读写),然后修改diskio.c的具体内容,包括以下几个函数,以适应用户层对文件的操作。原创 2023-02-24 16:02:16 · 1280 阅读 · 0 评论 -
DMA传输的几个例子
DMA(Direct Memory Access)—直接存储器存取,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用 CPU,即在传输数据的时候,CPU 可以干其他的事情,好像是多线程一样。原创 2023-02-22 19:06:41 · 1300 阅读 · 0 评论 -
NVIC与中断控制
本文章部分代码参考自野火的例程,优先级部分参考自分外部中断、串口中断两部分串口部分在本栏目的另外一篇会重点讲解,此次只讲串口与EXTI类似的中断部分原创 2023-02-18 00:42:50 · 2664 阅读 · 0 评论 -
GPIO,三种方式点亮STM32的LED灯
用三种方法点亮LED灯,本质都是对寄存器写数据原创 2023-02-17 21:08:15 · 612 阅读 · 0 评论