- 博客(12)
- 资源 (2)
- 收藏
- 关注

原创 我的第一篇优快云博客
我的第一篇优快云博客说来惭愧,本人毕业至今从事嵌入式开发五年有余,接触过车载终端、ATM机、医疗器械、物联网终端,用过多种嵌入式技能,之前都是闷头享用博友们分享的知识,至今也没有分享过自己的技术积累。2021新年伊始,开始立Flag的时候,下决心把自己的技术积累拿出来,体验下分享的快乐,希望得到大家的支持。一、写作初体验之前一直以为写博客和编写word文档差不多,直到真正写起来才发现,优快云写博客用的竟然是makedown编辑器,也算是符合程序猿的气质。之前也听说过makedown语言,Git上
2021-01-03 11:02:33
1193
2
原创 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
6849
3
原创 STM32基于TFTP固件升级经验分享
开发背景最近开发的一款产品上位机与下位机之间使用LAN通讯(下位机MCU通过SPI控制网络模块W5500联网)因此固件升级也考虑通过LAN通讯的方式传输文件。一、文件传输方案选择1、HTTP协议1、上位机作为客户端使用浏览器,下位机作为服务器。采用这种方式,在下位机httpserver功能完善的情况下在浏览器上可以查看配置信息,如版本号,网络参数。但是下位机httpserver开发复杂,暂用较大FLAH存储空间。2、上位机充当服务器,下位机作为客户端模拟浏览器。采用这种方式,下位机只能请求
2022-01-27 11:30:50
3112
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
4139
2
原创 裸机中实现时间片轮转之软件定时器
裸机中定时执行任务一般是在定时器中断中更新自定义的计时变量,在main中判读时间到达后执行相关任务。这种方法代码可读性差,不利于代码的模块化,容易导致代码混乱。通过使用软件定时器,可将多个定时任务放到定时器回调函数中执行,实现类似RTOS的时间片轮转功能。一、软件定时器占用一个硬件定时器,通过定义数据结构和一定的算法,虚拟出多个软件定时器。定时器时间更新放入定时器中断,定时器回调函数放入main循环中即可。二、代码实现soft_timer.h:/* Define to prevent recurs
2021-01-07 16:07:54
921
2
原创 C语言循环队列实现
在嵌入式开发中,有时候数据收发速度和处理速度差别较大,若支持处理收发耗时较长,可能导致数据丢失或者增大系统响应时间。使用循环队列先把需要收发的数据存入队列,再在系统空闲是处理收发任务,可很好的解决以上的问题循环队列原理:参见博客 循环队列的原理C代码实现:ring_buf.h/** * File: ring_buf.h * Date Author Notes * 2020-11-25 dave */#ifndef _RING_BU
2021-01-03 16:11:58
293
1
原创 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
6629
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
7776
18
STM32 TFTP固件升级实例
2022-01-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人