我们在从事MCU应用开发过程中,难免会碰到MCU芯片异常的问题。比如异常复位,表现为复位脚有电平跳变或者干脆处于复位电平;在做代码调试跟踪时,发现代码往往进不到用户main()程序;或者时不时感觉芯片死掉了,功能完全不可控等。
针对类似严重异常情况的原因我在这里大致总结下,与大家分享。
1、时钟问题。一般表现在时钟配置异常,比方配置超出芯片主频工作范围。【对于STM32系列MCU,如果使用STM32CUBEMX图形化工具做配置,基本可以回避这个问题】
2、电源问题。比方电源质量差,纹波过大,尤其开关电源供电时;或者供电芯片质量差,输出不稳定;或者系统供电能力不足而引起电源波动等。
3、BOOT脚配置问题。对于ARM芯片往往都有些BOOT配置脚。经常遇到有人因为BOOT脚的焊接或接触不良导致各类奇怪问题。这种情况多表现在芯片功能时好时坏,或者部分芯片正常,部分芯片异常。
4、启动文件问题。经常因为选错了启动文件,导致程序无法正常运行,或者说调试时好好的,脱机运行就出鬼。这点在做不同系列芯片间移植时最容易碰到。
5、中断请求位清除问题。由于中断请求位没有及时清除导致中断没完没了的重复进入,感觉系统死机一般。
6、堆或栈的越界溢出。这个也会导致芯片无法正常工作,调试时往往可能会有硬错提示。
7、VCAP脚问题。有些MCU芯片有VCAP脚,该类脚往往需要接上适当的电容,如果无视了它的话,也可能导致整个芯片的功能异常。
上面这几个原因比较容易导致MCU出现功能严重异常,也不太容易简单地通过查看MCU技术手册直接获得答案,分享出来算作一些提醒。
关键字:stm32 常见原因
引用地址:
stm32功能严重异常的几个常见原因
推荐阅读最新更新时间:2024-03-16 16:12
让汽车ECU开发事半功倍,ST AutoDevKit工具包是何物?
常态下,工程师眼中的汽车 ECU 开发:复杂 1. 需求分析和顶层设计; 2. 元器件选型、硬件模组原理图设计、PCB 打样、PCBA 与单元模组测试; 3. 模组组装; 4. 软件开发与测试; 5. 系统测试、修正与再修正、认证。 用 ST AutoDevKit 后,工程师眼中的汽车 ECU 开发:搭积木 1. 需求分析,定下目标; 2. 模组、技术的选择和订购,也可进行解决方案推荐,硬件式“搭积木”; 3. 下载 AutoDevKit 免费软件开发环境,调用必要软件栈,根据操作指示说明完成应用开发; 4. 资深专家辅助测试与验证。 AutoDevKit 是何物?哪些人可从中受益?
[汽车电子]
STM32启动过程详解
一、STM32启动文件详细解析 STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例 ;******************** (C) COPYRIGHT 2011 STMicroelectronics ******************** ;* File Name : startup_stm32f10x_hd.s ;* Author : MCD Application Team ;* Version : V3.5.0 ;* Date : 11-March-2011 ;* Description : STM
[单片机]
STM32工程不同系列芯片间的移植
1. 芯片容量的确定,往往容易疏忽。 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、 STM32F102xx和 STM32F103xx微控制器。 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、 STM32F102xx和 STM32F103xx微控制器。 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控 制器。 互联型产品是指STM32F105xx和STM32F107xx微控制器。 2. 居动文件的选择,不同芯片选择不同的居动文件。 官方库中STM32F10x_StdPeriph_Lib_V3.5.0\L
[单片机]
STM32的USARTx中u3_printf函数解析
我们在STM32中常常使用printf来将信息打印至PC端控制台上。但是有这样一种函数,它可以把数据以我们指定的格式装进字符串中——sprinft和vsprintf。 ⑴ sprintf函数使用的方式如下: ① 将多个参数以指定格式写入字符串 int a=1,b=2; char s ; sprintf(s, a=%d,b=%d ,1,2); puts(s); 输出结果:a=1,b=2 ② 错误使用:在函数封装中使用 void Myprintf(const char* fmt,...) // 传递个数不定的参数 { char s ; sprintf(s,fmt); // 出现错误 puts
[单片机]
STM32开发笔记91: SX1268驱动程序设计(发送模式)
单片机型号:STM32L053R8T6 本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍发送模式的相关驱动程序。 一、TX模式 In TX mode after ramping-up the Power-Amplifier (PA) transmits the data buffer. In TX mode the circuit can operate in different sub-modes: single mode or single with timeout mode.(在TX模式下,功率放大器(PA)启动后便可以传输数据缓冲区中的数据。在TX模式下电路可以工作不同的子模式:单模式或单超时模式
[单片机]
STM32 BIT_BAND 位带别名区使用入门
这两个区中的地址除了可以像普通的RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个32 位的字 每个比特膨胀成一个32 位的字,就是把 1M 扩展为 32M ,于是;RAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是: // 0X220000000 ,0X220000004,0X220000008,0X22000000C,0X220000010,0X220000014, 0X220000018,0X22000001C // 支持位带操作的两个内存区的范围是: // 0x2000_0000‐0x200F_FFFF(SRAM 区中的 // 0x4000_0000‐0x400F_
[单片机]
STM32_管脚 部分映射和全映射
在管脚映射的时候一定要记得开启映射的时钟RCC_APB2Periph_AFIO 如下 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//全部释放 GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE); 映射了PD0,
[单片机]
STM32裸机编程的基础知识(5)
闪烁 LED 现在我们已经搭建好了完整的构建、烧写的基础设施,是时候让固件做点儿有用的事情了。什么是有用的事情?当然是闪烁 LED 了!Nucleo-F429ZI 开发板有 3 颗 LED,在开发板数据手册的 6.5 节,我们可以看到板载 LED 连接的引脚: PB0: green LED PB7: blue LED PB14: red LED 再次修改 main.c 文件,添加上引脚定义,然后把蓝色 LED 引脚设为输出模式,开始无限循环。首先,把我们之前讨论过的 GPIO 定义和模式设置拷贝过来,注意,现在又新加了一个 BIT(position) 工具宏: #include inttypes.h #include
[单片机]