![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
文章平均质量分 61
MrDaveDing
通过持续学习,不断丰富大脑,成为资深技术专家,工作和生活更加happy!
展开
-
STM32内部Flash模拟EEPROM磨损均衡算法
目录前言一、为什么需要使用磨损均衡算法二、算法均衡说明1、最小数据存储结构2、读写方案三、算法实现代码1.头文件2.源文件总结前言许多场合下我们需要掉电保存一些参数,使用EEPROM会增加成本且开发麻烦。利用内部FLASH模拟EEPROM可在节约硬件成本的情况下通过简单的算法很方便地实现同样的功能。一、为什么需要使用磨损均衡算法1、EEPROM按字节擦写数据,内部FLASH只能按页擦除,按半字写入;2、FLASH 单个存储位只能从1变为0,而不能从0变成1;3、擦除过程就是把所有的存储位都写原创 2022-03-12 17:30:50 · 5179 阅读 · 1 评论 -
STM32基于TFTP固件升级经验分享
开发背景最近开发的一款产品上位机与下位机之间使用LAN通讯(下位机MCU通过SPI控制网络模块W5500联网)因此固件升级也考虑通过LAN通讯的方式传输文件。一、文件传输方案选择1、HTTP协议1、上位机作为客户端使用浏览器,下位机作为服务器。采用这种方式,在下位机httpserver功能完善的情况下在浏览器上可以查看配置信息,如版本号,网络参数。但是下位机httpserver开发复杂,暂用较大FLAH存储空间。2、上位机充当服务器,下位机作为客户端模拟浏览器。采用这种方式,下位机只能请求原创 2022-01-27 11:30:50 · 2675 阅读 · 1 评论 -
STM32 HAL库配置CAN滤波代码分享
STM32 使用HAL库配置CAN滤波代码分享1、使用标准帧1、列表模式static void CAN1_FilterCfg(uint32_t Id1,uint32_t Id2,uint32_t Id3,uint32_t Id4){CAN_FilterTypeDef CAN_FilterType;CAN_FilterType.FilterBank = 0;CAN_FilterType.FilterIdHigh = (0x80 << 5);CAN_FilterType.Filter原创 2022-01-25 10:59:16 · 3461 阅读 · 0 评论 -
STM32串口DMA发送数据丢失
项目场景:STM32调用接口HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)发送一条串口数据后接着发送下一条数据。问题描述:串口调用DMA发送数据后,必须等待数据发送完成才能修改发送DMA缓冲区中的数据启动下一次发送,否则会导致上次发送被覆盖。实际发送后有等待DMA发送完成,但是连续两个数据发送依旧会导致丢失。 HAL_UART_Transmit_原创 2021-01-03 15:38:16 · 5577 阅读 · 7 评论 -
STM32串口DMA接收双缓冲
STM32高端MCU(F4、F7等)才支持DMA双缓冲,低端MCU(F1)不支持DMA双缓冲,不过有替代方案可实现类型效果。一、MCU支持DMA双缓冲的情形不再赘述,参见博客 STM32 串口DMA发送+DMA接收+硬件双缓冲区切换功能实现二、MCU不支持DMA双缓冲,但可通过DMA传输半完成中断替代,以下代码已在F103上验证通过。1.先通过STM32CubeMX生成串口初始化代码串口接收DMA一定要选择Circular模式,并且使能串口接收中断2.使能空闲中断,空闲中断中取出接收数据3原创 2021-01-03 14:52:59 · 7070 阅读 · 18 评论