<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zuoxi4621的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zuoxi4621</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zuoxi4621]]></copyright><item><title><![CDATA[STM32串口空闲中断+DMA接收异常排查及解决方法]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/150979442</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/150979442</guid><author>zuoxi4621</author><pubDate>Fri, 29 Aug 2025 11:29:10 +0800</pubDate><description><![CDATA[2、STM32串口先初始化，EC800E初始化时使能脚使能（EN=1）STM32和EC800E能正常通信， EC800E失能（EN=0）一段时间再使能（EN=1）STM32和EC800E就不能正常通信。1、STM32串口先初始化，EC800E初始化时使能脚失能（EN=0）后再启动STM32串口接收 后续EC800E再使能（EN=1）STM32和EC800E能正常通信。使用出现异常情况的代码，在开启串口接收前重新配置串口接收的相关DMA，STM32和EC800E能正常通信。使用串口空闲中断配合。]]></description><category></category></item><item><title><![CDATA[STM32中诡异的ADC采样及问题原因]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/148613769</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/148613769</guid><author>zuoxi4621</author><pubDate>Thu, 12 Jun 2025 17:01:39 +0800</pubDate><description><![CDATA[在STM32F407VET6开发中，发现ADC采样异常受SPI初始化和printf打印影响。调试发现，SPI函数中的局部变量操作导致内存残留值（0xEF00）污染了未初始化的ADC配置结构体成员ADC_ExternalTrigConv，引发采样值异常。通过调试对比内存地址及相关值，确认异常源于内存地址中残留的值影响了后续ADC初始化相关结构体中的成员。

1、局部变量释放后，其之前占用的内存空间的值并不会清零会一直存在。

2、变量在声明之后一定要赋初值，否则可能出现意想不到的诡异情况。

3、外设初始化的]]></description><category></category></item><item><title><![CDATA[一款免费的PDF压缩工具]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/141602395</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/141602395</guid><author>zuoxi4621</author><pubDate>Tue, 27 Aug 2024 14:43:59 +0800</pubDate><description><![CDATA[1、运行文件后选择需要压缩的PDF文件。（工具未做软件签名，运行时360会报毒，添加信任即可。做软件签名得花钱 ╮(╯▽╰)╭）工具 "PDF压缩工具V1.1.0.exe" 的MD5为: 7B6A5A07B226AA9613129D6296E9AB84。3、点击 压缩PDF按钮  等待压缩完成。]]></description><category></category></item><item><title><![CDATA[STM32 固件升级之SRAM(运行内存)、FLASH(闪存)分配及栈顶地址合法性检查详解]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/140384874</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/140384874</guid><author>zuoxi4621</author><pubDate>Thu, 15 Aug 2024 15:42:00 +0800</pubDate><description><![CDATA[运行内存、FLASH(闪存)分配在远程升级开发过程中尤为重要，]]></description><category></category></item><item><title><![CDATA[通俗易懂，教你学会使用C语言指针]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/138664839</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/138664839</guid><author>zuoxi4621</author><pubDate>Fri, 10 May 2024 17:49:55 +0800</pubDate><description><![CDATA[(int*)就是数据类型   a就是变量  ，a只能存放地址（a=地址），要调用a地址里的数据 ，那就使用*a。a.数组类的指针在传参数时, 取数组首地址可以使用取地址符也可不使用取地址符。3、在使用指针时有些地方需要加取地址符有些地方不需要加，大多数人就被绕晕了，我们将指针的操作分为2大类，一类是数组类型的，一类是非数组类型的。b.通过指针传递的数组平时怎么使用数组，在传递后继续怎么使用数组就行了。非数组类的在传参时一定要使用取地址符，使用数据时一定要在变量名前加*（1）数组类指针使用方法。]]></description><category></category></item><item><title><![CDATA[STM32F4跑飞，定时器和ADC冲突导致跑飞及问题解决办法]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/136236344</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/136236344</guid><author>zuoxi4621</author><pubDate>Thu, 22 Feb 2024 17:17:08 +0800</pubDate><description><![CDATA[经过测试，定时器中断优先级为0-2时正常，优先级3-15时打断了ADC的初始化导致ADC无法正常工作。2、避免使用死循环等待外设结束，应使用超时机制，这样当外设出问题时可以避免代码跑飞，影响其他任务执行。现象:单独ADC或者单独定时器初始化都能正常工作，ADC和定时器都初始化后无法进入while循环；以上结论为个人测试后的看法，欢迎各位大佬参与讨论指正，共同进步！1、有中断的初始化尽量放在后面，没有中断的初始化靠前。方法2、ADC初始化放在定时器初始化之前。方法3、定时器中断优先级设置为0或1或2。]]></description><category></category></item><item><title><![CDATA[STM32CUBEMX自动生成代码的巨坑]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/135295029</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/135295029</guid><author>zuoxi4621</author><pubDate>Fri, 29 Dec 2023 17:09:55 +0800</pubDate><description><![CDATA[在实际应用中 过高的优化等级的编译器会将它认为无用的代码部分给优化掉，可能就将你的代码逻辑搞没了  让你怀疑人生！使用cubemx 配置相关引脚导出的keil工程会将keil编译器的代码优化等级默认设置为3如下图。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（1）基本过程及和单片机开发的区别]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/134391945</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/134391945</guid><author>zuoxi4621</author><pubDate>Wed, 15 Nov 2023 12:01:40 +0800</pubDate><description><![CDATA[嵌入式Linux驱动开发]]></description><category></category></item><item><title><![CDATA[FATFS文件系统打开、读取文件的时候，f_read 返回FR_OK ,但是读取的数据长度一直是0的问题]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/132497410</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/132497410</guid><author>zuoxi4621</author><pubDate>Fri, 25 Aug 2023 16:54:49 +0800</pubDate><description><![CDATA[2、通过逻辑分析仪检测SDIO 的CLK脚发现 在系统时钟为50MHZ时CLK脚频率为7mhz左右，168mhz 时CLK脚频率为24mhz左右。f_read 返回FR_OK ,但是读取的数据长度一直是0的现象：打开的是一个较小文件（不足1k）是能正确获取文件大小信息，打开一个较大文件(1.87MB)时返回FR_OK，文件大小信息是0。1、在问题出现前stm32使用的系统时钟频率是168mhz,为使产品符合低功耗要求降低频率至50mhz运行后出现问题，遂猜测和问题原因可能和系统时钟频率有关。]]></description><category></category></item><item><title><![CDATA[STM32L4位带操作，STM32L4不能位带操作的原因]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/129987495</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/129987495</guid><author>zuoxi4621</author><pubDate>Thu, 06 Apr 2023 13:44:18 +0800</pubDate><description><![CDATA[SRAM1前1M的存储空间的地址是0x20000000UL~0x200FFFFFUL，对应的32M位带空间是0x22000000UL~0x23FFFFFFUL。外设寄存器前1M的存储空间的地址是0x40000000UL~0x400FFFFFUL，对应的32M位带空间是0x42000000UL~0x43FFFFFFUL。例如，STM32F407的GPIO寄存器是映射在AHB1空间的，而STM32L43X的GPIO寄存器是映射在AHB2空间的。STM32L43X是M4内核的，本身是具备位带功能的。]]></description><category></category></item><item><title><![CDATA[Python 学习笔记（1）]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/128255680</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/128255680</guid><author>zuoxi4621</author><pubDate>Fri, 09 Dec 2022 18:12:44 +0800</pubDate><description><![CDATA[Python字符、列表基础操作]]></description><category></category></item><item><title><![CDATA[stm32F4系统时钟配置--标准固件库]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/125673682</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/125673682</guid><author>zuoxi4621</author><pubDate>Fri, 08 Jul 2022 11:36:17 +0800</pubDate><description><![CDATA[stm32系统时钟设置]]></description><category></category></item><item><title><![CDATA[STM32F4 TIM1输出PWM配置]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/124682393</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/124682393</guid><author>zuoxi4621</author><pubDate>Tue, 10 May 2022 10:36:22 +0800</pubDate><description><![CDATA[芯片使用的是STM32F407VET6,在项目中使用PWM控制LCD背光亮度，硬件设计使用PB0--TIM1-CH2N，使用时出现PWM的输出受LCD显示内容相关函数影响

原因：

使用硬件PB0--TIM1-CH2N输出pwm  配置时配置了CH2、CH2N

解决方法：
单独使用CHxN不使用CHx时应将CHx设为禁用 否则可能出现问题

为确保安全 需单独使用CHx时 也应将CHxN设置为禁用





单独使用CHxN时配置代码：

void TIM1_CH2N_PWM_Init(u32 arr.]]></description><category></category></item><item><title><![CDATA[STM32 DMA-TIM输出PWM DMA通道与TIM匹配的刨坑记录]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/121631790</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/121631790</guid><author>zuoxi4621</author><pubDate>Tue, 30 Nov 2021 15:39:24 +0800</pubDate><description><![CDATA[DMA-TIM 输出PWM相关配置]]></description><category></category></item><item><title><![CDATA[STM32高级定时器TIM1、TIM15输出PWM]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/79310603</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/79310603</guid><author>zuoxi4621</author><pubDate>Sun, 11 Feb 2018 17:07:41 +0800</pubDate><description><![CDATA[1、TIM初始化基本过程及源码(a)GPIO、TIM结构体变量申明(b)GPIO、TIM时钟使能(c)GPIO基本配置(d)TIM配置、通道设置(e)TIM使能源码如下：/*** @brief void TIM_Configuration(void)* @describe TIM配置  PWM输出初始化            TIM1 CH1 PA8						TIM1 CH2 PA9						...]]></description><category></category></item><item><title><![CDATA[树莓派给特定USB端口特定设备绑定自定义设备符]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/75173536</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/75173536</guid><author>zuoxi4621</author><pubDate>Sat, 15 Jul 2017 16:16:37 +0800</pubDate><description><![CDATA[参考博文：http://blog.youkuaiyun.com/lymmm2/article/details/53349649?utm_source=itdadao&utm_medium=referral
项目中用到树莓派，两个USB转485，识别设备是按usb插入的顺序来命名，这样在代码中打开指定串口变得非常困难 参考各处的博文解决了问题 在此做个汇总
（两个USB转485为不同厂商做的，ID不一样 根]]></description><category></category></item><item><title><![CDATA[bat脚本查看本机IP及启动MQTT服务器（Apollo）]]></title><link>https://blog.youkuaiyun.com/zuoxi4621/article/details/73499648</link><guid>https://blog.youkuaiyun.com/zuoxi4621/article/details/73499648</guid><author>zuoxi4621</author><pubDate>Tue, 20 Jun 2017 16:12:37 +0800</pubDate><description><![CDATA[MQTT是个好东西，觉得做物联网最合适不过，最近在用ESP8266做些东西，在不断调试过程中每次都要运行CMD去找到MQTT服务路径 再运行服务，着实心累，参照网上资料写了个.bat脚本 双击即可显示本机IP地址和运行MQTT服务（我装的是Apollo服务器 需要Java环境 文章末尾有链接）新建TXT文件 复制以下内容粘贴保存 并更改文件名 注意文件后缀为.bat  然后 双击即可运行（ C:\...]]></description><category></category></item></channel></rss>