<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DaveDing888的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DaveDing888</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DaveDing888]]></copyright><item><title><![CDATA[ADS1259驱动程序]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/142064000</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/142064000</guid><author>DaveDing888</author><pubDate>Mon, 09 Sep 2024 17:25:53 +0800</pubDate><description><![CDATA[ADS1259驱动代码分享]]></description><category></category></item><item><title><![CDATA[迪文屏（K600+）驱动代码分享]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/136227177</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/136227177</guid><author>DaveDing888</author><pubDate>Thu, 22 Feb 2024 10:54:33 +0800</pubDate><description><![CDATA[迪文屏K600+内核串口驱动代码分享]]></description><category></category></item><item><title><![CDATA[基于SEGGER-RTT的调试模块]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/128685198</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/128685198</guid><author>DaveDing888</author><pubDate>Sat, 14 Jan 2023 15:26:39 +0800</pubDate><description><![CDATA[SEGGER_RTT 调试功能扩展完善]]></description><category></category></item><item><title><![CDATA[C语言时间戳转换]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/126583318</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/126583318</guid><author>DaveDing888</author><pubDate>Mon, 29 Aug 2022 14:01:34 +0800</pubDate><description><![CDATA[C语言时间戳转换方法]]></description><category></category></item><item><title><![CDATA[STM32内部Flash模拟EEPROM磨损均衡算法]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/123446003</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/123446003</guid><author>DaveDing888</author><pubDate>Sat, 12 Mar 2022 17:30:50 +0800</pubDate><description><![CDATA[目录前言一、为什么需要使用磨损均衡算法二、算法均衡说明1、最小数据存储结构2、读写方案三、算法实现代码1.头文件2.源文件总结

前言
许多场合下我们需要掉电保存一些参数，使用EEPROM会增加成本且开发麻烦。利用内部FLASH模拟EEPROM可在节约硬件成本的情况下通过简单的算法很方便地实现同样的功能。

一、为什么需要使用磨损均衡算法
1、EEPROM按字节擦写数据，内部FLASH只能按页擦除，按半字写入；
2、FLASH 单个存储位只能从1变为0，而不能从0变成1；
3、擦除过程就是把所有的存储位都写]]></description><category></category></item><item><title><![CDATA[STM32基于TFTP固件升级经验分享]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/122712278</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/122712278</guid><author>DaveDing888</author><pubDate>Thu, 27 Jan 2022 11:30:50 +0800</pubDate><description><![CDATA[开发背景

最近开发的一款产品上位机与下位机之间使用LAN通讯（下位机MCU通过SPI控制网络模块W5500联网）因此固件升级也考虑通过LAN通讯的方式传输文件。


一、文件传输方案选择

1、HTTP协议
1、上位机作为客户端使用浏览器，下位机作为服务器。采用这种方式，在下位机httpserver功能完善的情况下在浏览器上可以查看配置信息，如版本号，网络参数。但是下位机httpserver开发复杂，暂用较大FLAH存储空间。
2、上位机充当服务器，下位机作为客户端模拟浏览器。采用这种方式，下位机只能请求]]></description><category></category></item><item><title><![CDATA[STM32 HAL库配置CAN滤波代码分享]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/122678603</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/122678603</guid><author>DaveDing888</author><pubDate>Tue, 25 Jan 2022 10:59:16 +0800</pubDate><description><![CDATA[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 &lt;&lt; 5);
CAN_FilterType.Filter]]></description><category></category></item><item><title><![CDATA[裸机中实现时间片轮转之软件定时器]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/112316051</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/112316051</guid><author>DaveDing888</author><pubDate>Thu, 07 Jan 2021 16:07:54 +0800</pubDate><description><![CDATA[裸机中定时执行任务一般是在定时器中断中更新自定义的计时变量，在main中判读时间到达后执行相关任务。这种方法代码可读性差，不利于代码的模块化，容易导致代码混乱。通过使用软件定时器，可将多个定时任务放到定时器回调函数中执行，实现类似RTOS的时间片轮转功能。
一、软件定时器
占用一个硬件定时器，通过定义数据结构和一定的算法，虚拟出多个软件定时器。定时器时间更新放入定时器中断，定时器回调函数放入main循环中即可。
二、代码实现
soft_timer.h：
/* Define to prevent recurs]]></description><category></category></item><item><title><![CDATA[C语言循环队列实现]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/112135893</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/112135893</guid><author>DaveDing888</author><pubDate>Sun, 03 Jan 2021 16:11:58 +0800</pubDate><description><![CDATA[在嵌入式开发中，有时候数据收发速度和处理速度差别较大，若支持处理收发耗时较长，可能导致数据丢失或者增大系统响应时间。使用循环队列先把需要收发的数据存入队列，再在系统空闲是处理收发任务，可很好的解决以上的问题

循环队列原理：
参见博客 循环队列的原理


C代码实现：
ring_buf.h

/**
 * File: ring_buf.h
 *   Date           Author       Notes
 *   2020-11-25     dave
 */

#ifndef _RING_BU]]></description><category></category></item><item><title><![CDATA[STM32串口DMA发送数据丢失]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/112135239</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/112135239</guid><author>DaveDing888</author><pubDate>Sun, 03 Jan 2021 15:38:16 +0800</pubDate><description><![CDATA[项目场景：

STM32调用接口HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)发送一条串口数据后接着发送下一条数据。

问题描述：

串口调用DMA发送数据后，必须等待数据发送完成才能修改发送DMA缓冲区中的数据启动下一次发送，否则会导致上次发送被覆盖。实际发送后有等待DMA发送完成，但是连续两个数据发送依旧会导致丢失。
  HAL_UART_Transmit_]]></description><category></category></item><item><title><![CDATA[STM32串口DMA接收双缓冲]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/112134302</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/112134302</guid><author>DaveDing888</author><pubDate>Sun, 03 Jan 2021 14:52:59 +0800</pubDate><description><![CDATA[STM32高端MCU（F4、F7等）才支持DMA双缓冲，低端MCU（F1）不支持DMA双缓冲，不过有替代方案可实现类型效果。
一、MCU支持ＤＭＡ双缓冲的情形
不再赘述，参见博客 STM32 串口DMA发送+DMA接收+硬件双缓冲区切换功能实现
二、MCU不支持ＤＭＡ双缓冲，但可通过DMA传输半完成中断替代，以下代码已在F103上验证通过。
1.先通过STM32CubeMX生成串口初始化代码
串口接收DMA一定要选择Circular模式，并且使能串口接收中断


2.使能空闲中断，空闲中断中取出接收数据
3]]></description><category></category></item><item><title><![CDATA[我的第一篇优快云博客]]></title><link>https://blog.youkuaiyun.com/DaveDing888/article/details/112132439</link><guid>https://blog.youkuaiyun.com/DaveDing888/article/details/112132439</guid><author>DaveDing888</author><pubDate>Sun, 03 Jan 2021 11:02:33 +0800</pubDate><description><![CDATA[我的第一篇优快云博客
说来惭愧，本人毕业至今从事嵌入式开发五年有余，接触过车载终端、ATM机、医疗器械、物联网终端，用过多种嵌入式技能，之前都是闷头享用博友们分享的知识，至今也没有分享过自己的技术积累。2021新年伊始，开始立Flag的时候，下决心把自己的技术积累拿出来，体验下分享的快乐，希望得到大家的支持。

一、写作初体验
之前一直以为写博客和编写word文档差不多，直到真正写起来才发现，优快云写博客用的竟然是makedown编辑器，也算是符合程序猿的气质。之前也听说过makedown语言，Git上]]></description><category></category></item></channel></rss>