嵌入式
文章平均质量分 56
MrDaveDing
通过持续学习,不断丰富大脑,成为资深技术专家,工作和生活更加happy!
展开
-
基于SEGGER-RTT的调试模块
SEGGER_RTT 调试功能扩展完善原创 2023-01-14 15:26:39 · 1111 阅读 · 0 评论 -
C语言时间戳转换
C语言时间戳转换方法原创 2022-08-29 14:01:34 · 4698 阅读 · 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 · 4821 阅读 · 1 评论 -
STM32基于TFTP固件升级经验分享
开发背景最近开发的一款产品上位机与下位机之间使用LAN通讯(下位机MCU通过SPI控制网络模块W5500联网)因此固件升级也考虑通过LAN通讯的方式传输文件。一、文件传输方案选择1、HTTP协议1、上位机作为客户端使用浏览器,下位机作为服务器。采用这种方式,在下位机httpserver功能完善的情况下在浏览器上可以查看配置信息,如版本号,网络参数。但是下位机httpserver开发复杂,暂用较大FLAH存储空间。2、上位机充当服务器,下位机作为客户端模拟浏览器。采用这种方式,下位机只能请求原创 2022-01-27 11:30:50 · 2506 阅读 · 1 评论 -
裸机中实现时间片轮转之软件定时器
裸机中定时执行任务一般是在定时器中断中更新自定义的计时变量,在main中判读时间到达后执行相关任务。这种方法代码可读性差,不利于代码的模块化,容易导致代码混乱。通过使用软件定时器,可将多个定时任务放到定时器回调函数中执行,实现类似RTOS的时间片轮转功能。一、软件定时器占用一个硬件定时器,通过定义数据结构和一定的算法,虚拟出多个软件定时器。定时器时间更新放入定时器中断,定时器回调函数放入main循环中即可。二、代码实现soft_timer.h:/* Define to prevent recurs原创 2021-01-07 16:07:54 · 821 阅读 · 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 · 253 阅读 · 1 评论