正点原子STM32F103烧坏 CH340发烫

本人是一位stm32初学者,在准备电赛的时候已经烧坏两块stm32f103的板子了,其现象都是某一天连接电脑准备烧新写好代码的时候发现:连接上去板子的led灯不亮,且板子上的CH340芯片发烫,请问是什么原因导致的呢,有无避免方法,谢谢各位了。

电压电流过大了,或者你的引脚接错或者短路了

当初烧坏了多个103单片机,原因很大一部分是因为使用单片机直接读取(或驱动)外部电路模块,一方面需要采用更加稳定的外部电路,当时我们队友用了OPA690作为电压跟随器,因为这个芯片稳定性差,用单片机ADC读取的时候输入电流过大(也可能是电压过大)把板子烧了,AD8021会更稳定些。另一方面,采用单片机ADC的时候,加个电压跟随器,可以5V供电的那种,以免自激突然产生高压脉冲烧毁单片机。外部电路的因素更容易导致烧板子,板子本身其实很稳定。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7671904
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:带你模仿正点原子编程风格到深入学习寄存器并手把手编写STM32F103寄存器程序(学习输入、输出模式到做出按键输入控制LED输出的IO基本控制实验)
  • 除此之外, 这篇博客: 6、stm32F103入门学习--点亮LED(寄存器操作)(进一步完善)中的 类比51单片机写法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在学51单片机的时候,我们第一句是#include<reg52.h>。关于基础部分,大家可以看我的51单片机部分,很详细,这里不具体展开。
    在第5小节中零零碎碎讲了一些地址,这节课逻辑性的讲一下。
    在stm32芯片手册中可以看到(P28),一共4G大小,地址范围0x0000 0000到0xFFFF FFFF,分成8个块(Block0~Block7),每块大小为512M。
    在这里插入图片描述
    在第4小节中我们用到了block2,具体看下block2的内容(参考stm32f10x系列参考手册)

    在这里插入图片描述在这里插入图片描述
    可以看到一共有3条总线:APB1、APB2、AHB。

    总线名称总线基地址
    APB10x4000 0000
    APB20x4001 0000
    AHB0x4001 8000

    其实APB1、APB2和AHB都是在外设地址(0x4000 0000)偏移,分别偏移0x0,0x0001 0000和0x0002 0000。
    那么定义

    #define PERIPH_BASE   0x4000 0000
    //总线基地址
    #define  APB1PERIPH_BASE   PERIPH_BASE
    #define  APB2PERIPH_BASE   (PERIPH_BASE+0x00010000)
    #define  AHBPERIPH_BASE   (PERIPH_BASE+0x00020000)
    

    看到GPIOC在APB2上偏移0x0001 0000。
    定义

    #define  GPIOC_BASE  (APB2PERIPH_BASE+0x00010000)
    

    再看下GPIOC相关寄存器
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    都是在GPIOC_BASE的基础上偏移地址,每次都是4个字节(32位)。
    所以定义

    #define GPIOC_CRL          *(unsigned int *)( GPIOC_BASE+0x00)
    #define GPIOC_CRH          *(unsigned int *)( GPIOC_BASE+0x04)
    #define GPIOC_IDR          *(unsigned int *)( GPIOC_BASE+0x08)
    #define GPIOC_ODR          *(unsigned int *)( GPIOC_BASE+0x0C)
    #define GPIOC_BSRR         *(unsigned int *)( GPIOC_BASE+0x10)
    #define GPIOC_BRR          *(unsigned int *)( GPIOC_BASE+0x14)
    #define GPIOC_LCKR         *(unsigned int *)( GPIOC_BASE+0x18)
    

    接下来配置时钟地址

    根据地址分配可得

    #define  RCC_BASE  (AHBPERIPH_BASE+0x1000)
    

    在这里插入图片描述
    根据上图可知,RCC_APB2ENR是在RCC基础上偏移0x18
    所以

    #define  RCC_APB2ENR  *(unsigned int*)(RCC_BASE+0x18)
    

    以上讲了那么多无非是把上节课程序中的

    *(unsigned int*)0x4002 1018
    *(unsigned int*)0x40011004 
    *(unsigned int*)0x40011004 
    *(unsigned int*)0x4001 100C
    

    讲解更能清楚,我们不希望在main函数中出现类似0x4002 1018的地址,而使用可读性更好的英文单词来表述。因此仿51单片机的写法,把一些地址定义放在头文件stm32f10x.h中。

    //头文件stm32f10x.h
    #define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
    /* AHB总线基地址 */
    #define AHBPERIPH_BASE        (PERIPH_BASE + 0x20000)
    
    /*GPIOC外设基地址*/
    #define GPIOC_BASE            (APB2PERIPH_BASE + 0x1000)
    	
    /* GPIOC寄存器地址 */
    #define GPIOC_CRL			*(unsigned int*)(GPIOC_BASE+0x00)
    #define GPIOC_CRH			*(unsigned int*)(GPIOC_BASE+0x04)
    #define GPIOC_IDR			*(unsigned int*)(GPIOC_BASE+0x08)
    #define GPIOC_ODR			*(unsigned int*)(GPIOC_BASE+0x0C)
    #define GPIOC_BSRR	        *(unsigned int*)(GPIOC_BASE+0x10)
    #define GPIOC_BRR			*(unsigned int*)(GPIOC_BASE+0x14)
    #define GPIOC_LCKR		    *(unsigned int*)(GPIOC_BASE+0x18)
    	
    /*RCC外设基地址*/
    #define RCC_BASE      (AHBPERIPH_BASE + 0x1000)
    /*RCC的AHB2时钟使能寄存器地址*/
    #define RCC_APB2ENR		 *(unsigned int*)(RCC_BASE+0x18)
    

    那么在main函数中可以写成

    #include “stm32f10x.h”
    int main(void)
    {
    	RCC_APB2ENR |= 1<<4;
    	GPIOC_CRH &=~(0x0F<<(4*5));
    	GPIOC_CRH |=(1<<(4*5));
    	GPIOC_ODR &=~(1<<13);
    	while(1);
    }
    void SystemIinit()
    {
    }
    

    接下来做实验,在文件夹中新建文件“stm32f10x.h”。
    在这里插入图片描述
    将头文件添加到Keil工程中,添加方式参考添加启动文件的过程。打开头文件,输入如下程序。
    在这里插入图片描述
    在main.c中输入如下程序。
    在这里插入图片描述
    编程下载到开发板观察到实验现象。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

初步感觉是板子短路了,有万用表的话先量一下板子的电源引脚,看看是不是短路问题,是自己焊接的PCB板子还是现成的板子呢,你都排查一下

5v不能接到单片机的3v,我就因为这样烧坏过,还有正负极相接会短路LED灯会熄灭。

STM32 我的串口坏的解决方法
可以参考下
https://blog.csdn.net/weixin_42442319/article/details/118928158
http://www.51hei.com/bbs/dpj-212489-1.html

建议不要连接多电源,同时只能由一个地方供电,我出现过烧坏板子这个问题.

检查下你的电路的接线是否存在问题。以及驱动啥的方面的问题。其次,认真读它的手册,对实体进行仔细检查、核对是否应用与手册不符,特别是电源、通讯部分。

电流过大吧

连接电脑时出现板子上的LED灯不亮且CH340芯片发烫的情况可能有以下几个原因:

电源问题:检查供电是否正常,确保供电电压稳定。如果供电电压不稳定或电流过大,可能会导致芯片发热和电路异常。

电路连接问题:检查连接电路是否正确,确保连接线的接触良好,没有接触不良或短路现象。

芯片损坏:如果使用的芯片已经损坏,可能会导致电路异常和发热。在使用STM32开发板时,要注意避免过度烧写程序,过度调试或意外的短路等操作,以防止芯片受损。

为避免这些问题发生,你可以采取以下预防措施:

使用稳定的电源:确保所使用的电源稳定,电压和电流符合芯片的要求。可以使用稳压电源或者USB电源适配器来供电。

检查连接线路:在连接STM32开发板与电脑时,仔细检查连接线路是否正确连接,确保连接线的接触良好,避免接触不良或短路。

谨慎操作:在编程和调试过程中,遵循正确的操作流程,避免频繁烧写程序、过度调试或意外短路等操作。遵循规范的开发流程,确保操作正确性。

温度控制:在使用开发板时,注意环境温度控制,避免长时间在高温环境下操作,以免芯片过热损坏。

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

在CST(Computer Simulation Technology)中仿真带有放大器的微带线传输系数时,直接导入touchstone得到的S参数与放大器的参数完全不同,使用离散端口进行场路协同也无法获得正确的S参数。要解决这个问题,可以尝试以下方法来仿真微带线的放大器部分:

  1. 放大器模型选择:首先,确保您选择了合适的放大器模型。在CST中,您可以使用合适的放大器模型进行仿真。请确保所选的放大器模型与实际使用的放大器一致,并且包含了正确的参数和行为。
  2. 仿真设置:在CST中,确保您正确设置了仿真的参数。例如,选择适当的频率范围和分析类型(如频域分析或时域分析),以满足您的仿真需求。还要注意设置正确的激励源和端口参数,以与放大器和微带线的连接方式相匹配。
  3. 网格划分和精度:在仿真中,确保使用适当的网格划分和精度设置。微带线和放大器的尺寸和细节对仿真结果有重要影响。尝试使用更精细的网格划分和适当的精度设置,以更准确地捕捉微带线和放大器的特性。
  4. 确认连接:在仿真中,确保正确连接微带线和放大器。检查连接是否准确,并注意确认导线的正确性、接地和匹配等因素。
  5. 参考CST文档和教程:查阅CST的官方文档和教程,特别是关于微带线和放大器仿真的部分。这些资源通常提供了详细的说明和示例,以帮助您更好地理解和处理微带线的放大器仿真问题。

请注意,具体的仿真方法和步骤可能因您的具体情况而异,建议您仔细检查仿真设置和参数,并参考CST的文档或寻求相关技术支持以获取更具体的指导和帮助。

参考GPT:
结合分析得出:
1:这个问题是关于自己做的板子,使用了STM32F103ZET6芯片,电源转换芯片AMS1117-3.3,当供电+5V时,STM32芯片马上就很热的情况,回答者给出了一些可能的原因和解决方法,如检查是否有短路的地方或者IO电流大的地方,确认各个电源引脚是否供电正常,检测滤波电容有没有短接的地方,更换芯片等。
2:这个问题是关于产品已经出成品,小概率出现单片机异常发热,异常的点在产品各个模块功能看似又挺正常,就是单片机热的厉害的情况,回答者给出了一些可能的原因和解决方法,如做EMC测试和整改,检查外接IO是否加了保护,排除芯片渠道的问题等。