- 博客(15)
- 收藏
- 关注
原创 记录一次stm32移植FreeRTOS系统过程
本文详细记录了在STM32F103VET6开发板上移植FreeRTOS v10.2.1的过程。首先从源码托管平台下载FreeRTOS源码,然后将其添加到基于标准库的串口工程中。重点介绍了需要移植的核心文件及功能,包括任务管理、队列、事件组等。文章详细说明了配置文件的修改方法,特别是中断服务函数的重定义和钩子函数的设置。最后通过创建简单任务验证了移植的正确性。整个过程涵盖了从源码获取、工程配置到功能测试的完整流程,为STM32平台上的FreeRTOS移植提供了实用参考。
2025-09-01 09:30:00
769
原创 STM32固件升级设计——SD卡升级固件
本文介绍了基于STM32F407的SD卡固件升级方案。系统将Flash划分为64KB的BootLoader区和960KB的APP区,通过修改MSP和PC实现程序跳转。BootLoader初始化时会检测SD卡是否存在firmware.bin文件,存在则按512字节块擦除并写入APP区,否则直接跳转至APP程序。APP程序需设置0x08010000的向量表偏移。测试表明,该方案能成功实现SD卡固件更新,升级完成后自动运行新程序。
2025-07-14 08:38:47
1772
原创 STM32固件升级设计——串口IAP升级(基于YMODEM协议)
摘要:本文介绍了基于STM32的串口IAP升级实现方案,采用YMODEM协议通过串口传输固件。系统将512K Flash划分为BootLoader区(12K)、标志位区(4K)和APP区(496K)。BootLoader负责检测升级标志,若需升级则持续发送字符"C"请求数据,接收完成后跳转至APP;APP程序可通过串口指令触发升级。
2025-07-07 13:30:00
5917
1
原创 STM32固件升级设计——内部FLASH模拟U盘升级固件
本文介绍了基于STM32的USB模拟U盘固件升级方案。通过将Flash划分为BootLoader(32K)、SETTING(4K)、APP(238K)和DOWNLOAD(238K)四个区域,实现IAP功能。BootLoader程序包含USB Mass Storage驱动和FATFS文件系统,上电时检测升级标志位,通过按键触发进入U盘模式。用户只需将bin文件复制到虚拟U盘,BootLoader会自动将文件写入APP区域完成升级。
2025-07-07 08:39:08
1686
8
原创 STM32固件升级设计——SPIFLASH模拟U盘升级固件
摘要: 本文介绍了基于STM32的USB模拟U盘升级固件实现方案。系统将Flash划分为BootLoader(32K)、Setting(4K)和APP(476K)三个区域,通过修改MSP和PC实现多程序切换。BootLoader程序包含USB Mass Storage、W25Q64存储和FATFS文件系统驱动,支持通过U盘拖拽bin文件实现固件升级。
2025-06-30 09:27:51
1711
原创 EEPROM读写驱动程序
EEPROM作为嵌入式常用的芯片,驱动较为简单,采用IIC接口,但是仍然需要注意几个点,以AT系列为例,AT24C04~AT24C1024需要注意它们的页选择位等,本文会说明多个芯片的区别,并集成在同一个驱动中。对于AT24Cxx系列的芯片,A0、A1、A2作为地址输入引脚,最多可级联八个该器件(地址0xA0、0xA2、0xA4、0xA6、0xA8、0xAA、0xAC、0xAE#define EE_01_PAGE_NUM 16 //页数。
2025-03-19 19:28:59
1095
原创 STM32+串口DMA配置和使用
DMA,直接存储器存取(Direct Memory Access)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。串口(uart)是一种低速的串行异步通信,适用于低速通信场景,通常使用波特率小于或等于115200bps。对于小于或者等于115200bps波特率的,而且数据量不大的通信场景,一般没必要使用DMA,或者说使用DMA并未能充分发挥出DMA的作用。
2024-12-27 11:48:21
3279
原创 STM32+外部中断+定时器 实现红外遥控(二)
本文主要介绍如何利用外部中断和定时器实现红外遥控功能代码,在上一篇文章已经简述过原理了,所以本文着重于应用,不讲原理。原理部分可跳转。在前文和本文中,红外遥控代码分为两种,一种是输入捕获中断实现红外遥控,本文是用外部中断+定时器来实现,两种方式用到的方法是同样的,不同的是用到的外设不同,下面将会列举编写代码过程遇到的问题。注意:1、在多任务系统里:vTaskDelay(50);//200 时间太长了会导致数据还没找到就又来了一个数据,会导致按下红外按键就出现按下两次的情况。
2024-08-24 08:39:10
1223
原创 STM32+TIM输入捕获中断 实现红外遥控(一)
由于日常工作需要,简略写一篇关于红外遥控的文章,方便日后理解和随时移植。本文通过野火指南者(STM32F103VET6单片机)实现红外遥控接收过程。
2024-08-17 15:13:38
1913
2
原创 记录一下C语言函数指针的用法
关于函数指针,本文没有注重理论,只是写了两个比较简单例程,方便之后回来看到就能够联想到函数指针的用法,关于函数指针的介绍,可跳转。
2024-06-18 08:51:59
264
原创 如何将keil5中的bin文件合并
最近有个需求,需要把单片机中的两个bin文件合并成一个bin文件,方便板子在生产烧录代码阶段可以节约烧录次数,这两个文件一般指的是BOOT+APP文件,bin文件里面没带有地址信息,但是在单片机中的烧录文件需要定位起始地址,所以就需要特别注意它们的偏移地址。因为可能会涉及到进制的转换,用了好几个工具都以失败告终,然后就总结两个简单的方法,哈哈。本次使用的两种方法感觉还是不够灵活,不能在keil5里面一起实现,但好歹也是自己找了一下午的方法,据说也可以通过winhex。
2024-06-15 10:16:49
1886
原创 学习如何让STM32在运行时改变PWM频率和占空比
最近有个需求是关于调节占空比去控制风扇实现三挡风力大小的。由于硬件供电和控制成本等原因,普通的芯片支撑不起几个风扇同时转起来,于是就沿用了一个神奇的电路方案,但是这个方案在输出占空比的时候达不到真正的占空比(这里解释不清),因为电机类需要特别注意频率的大小,频率太高或者太低或多或少都会让人耳接受不了,反正是需要在运行时同时改变PWM频率和占空比,本文着重于应用,不讲原理。一、定时器介绍。
2024-06-06 14:54:02
9546
7
基于YMODEM协议的串口IAP升级固件
2025-07-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅