单片机自动复位原因_单片机复位电路为什么不能复位

发布者:脑电狂徒最新更新时间:2023-01-31 来源: elecfans关键字:单片机  自动复位  复位电路 手机看文章 扫描二维码
随时随地手机看文章

  单片机自动复位原因

  单片机自动复位常见的原因有:

  1.掉电或电压过低(我用STC单片机的时候遇到过因为电源电压过低而导致自动复位的情况)

  2.程序跑飞或者死机后,由看门狗引发的复位

  3.复位引脚接收到复位信号(人工产生或者外部看门狗等电路产生)

  4.STC89C52RC单片机在使用汇编语言编程时,出现类似C语言中函数递归的语句时,可以自动复位。这个我在实验时看到过这个现象,但具体原因不明,我没有使用看门狗。

  5.有些单片机可以在程序控制下自动复位。

  单片机复位电路不能复位的原因

  STM32f0按键模块电路经常遇到上电不复位的情况,芯片采用的是stm32f030,按键模块采用ZLG7290芯片、4X4按键LED矩阵。ZLG7290是周立功公司专门开发的按键芯片,其最大可支持64个按键和64个LED,可通过I2C协议对其读写,ZLG7290与stm32f030复位电路采用datasheet参考电路,如下:

单片机自动复位原因_单片机复位电路为什么不能复位

  正常情况下,电路上电后会有一个LED全部点亮的过程,上电稳定延时后,LED自动全部熄灭,正常运行时,按下相应按键其对应的LED灯应被点亮。

  问题:

  STM32复位电路内部有自带的上拉电阻,同时PVD的电源检测阈值采用的是默认值2.2V,采用电池供电,电压表测量引脚电压在2.8V左右,但是电路上电后不能正常运行,LED矩阵上电不能被点亮,按键按下后相应LED灯无反应。

  测试

  stm32f030复位测试

  stm32f030上电复位后,程序依次执行初始化的过程,其中包括设置时钟为内部48MHZ时钟频率,设置并启动串口、I2C等,之后执行LED灯全部点亮函数,延时3s关闭所有LED并进入主功能程序。

  测试任务:stm32f030是否能复位:

  既然上电后LED灯不能全部点亮,则LED灯全部点亮函数不能正常执行,则在此函数之前添加一个UART串口发送函数。

  测试结果:

  串口发送函数被执行,在超级终端收到正常的数据。

  此时表示stm32f030能正常复位。

  测试任务:注释掉LED灯全部点亮函数

  此时上电后,LED不能被全部点亮(函数被注释),但是按下按键后相应LED可以被点亮。此时可锁定问题在LED灯全部点亮函数上。

  分析:

  LED灯全部点亮函数实际上是一个I2C写函数,通过向ZLG7290相应寄存器写入0xFF,可点亮LED。采用上面测试的方法,在函数的每一条语句之前插入一条UART发送函数,分析执行情况,其中

  while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET);

  执行没有问题,再次说明stm32f030能正常复位。但是在

  I2C_Senddata(I2C1, data);

  语句之后,UART发送函数不能被正常执行,因此问题被锁定。

  ZLG7290不能被正常读写,很可能ZLG7290没有被复位。

  查阅ZLG7290的datasheet,发现ZLG7290复位时间在20ms左右,其远远大于stm32f030,因而产生ZLG7290没有正常复位的情况。

  结论:

  电路上电不复位的原因可能是多方面的,特别是stm32f030和外围电路均需要复位的情况,因此各个模块可能需要隔离测试,最终锁定问题才能找到解决的方法。


关键字:单片机  自动复位  复位电路 引用地址:单片机自动复位原因_单片机复位电路为什么不能复位

上一篇:使用单片机实现复位电路的资料详细说明
下一篇:什么是MCU里应尽量遵循的寄存器谨慎赋值法

推荐阅读最新更新时间:2024-11-11 16:20

华大电子MCU-CIU32F011x3、CIU32F031x5特点和简介
1. 华大电子MCU 产品特性 • 内核与系统 – 32 位 ARM® CortexTM-M0 处理器内核 – 工作频率可达 48MHz – 32 个指令周期 32 位硬件乘法器 – 32 个中断源,可配置 4 层中断优先级 – 支持 SWD 调试接口 – 支持位带 • 存储器 – 64K/32K 字节的闪存程序存储器 – 4K/2K 字节的 SRAM – Flash 1Bit ECC • 时钟、复位和电源管理 – 2.5V ~ 5.5V 供电 – 片上电容 LDO 为芯片内系统供电,LDO 带过流保护 – 上电/断电复位(POR/PDR)、8 档可编程电压监测器(PVD) – 内嵌 48MHz(±1%) 高速振荡器 –
[单片机]
51单片机实验7:矩阵按键
开发板矩阵按键模块电路图如下: 开发板数码管模块电路图如下: 矩阵按键扫描原理: 方法一:逐行扫描:我们可以通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。 方法二:行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。 在本程序中,扫描矩阵按键采用行列扫描的方式!
[单片机]
51<font color='red'>单片机</font>实验7:矩阵按键
用51单片机做一个简易呼吸灯
利用占空比的方式来控制灯的变暗和变亮 占空比就是高电平和低电平的比例; 实现呼吸灯效果是利用人眼的分辨率只能看到25帧每秒,甚至还不够, 所以用单片机做呼吸灯是利用频率来控制呼吸灯的呼吸时间,用占空比来控制灯的亮度 代码如下 #include reg52.h sbit LED1=P2^0; //定义灯的位置 int PWM_Low,Clock=500; void delay(unsigned int x) //延迟函数 { int i; for(i=0;i x;i++); } void main(void) { while(1) { for(PWM_Low=Clock;PWM
[单片机]
IAR for Arm集成开发环境全面支持芯驰科技9系列SoC和E3系列MCU
IAR Embedded Workbench for Arm集成开发环境已全面支持芯驰科技9系列SoC和E3系列MCU 最新版 IAR Embedded Workbench for Arm 全面支持芯驰科技9系列SoC和E3 MCU 芯片,帮助中国汽车行业开发者打造强大的嵌入式开发解决方案 中国上海—2022年6月17日——全球领先的嵌入式开发软件工具和服务提供商IAR Systems日前宣布:其最新发布的IAR Embedded Workbench for Arm 9.30版本已全面支持芯驰科技9系列SoC和E3 MCU芯片。 国内领先的车规芯片企业芯驰科技致力于为未来智慧出行提供高性能、高可靠的车规芯片
[嵌入式]
IAR for Arm集成开发环境全面支持芯驰科技9系列SoC和E3系列<font color='red'>MCU</font>
平凡单片机教学 第六讲 单片机内部结构分析(五)
通过前面的学习,我们已知单片机的内部有ROM、有RAM、有并行I/O口,那么,除了这些东西之外,单片机内部究竟还有些什么,这些个零碎的东西怎么连在一起的,让我们来对单片机内部作一个完整的分析吧! 看图(1)(本图太大,请大家找本书看吧,一般讲单片机的书,随便哪本都有)。从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在一个51单片机的内部包含了这么多的东西。 对上面的图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O口的
[单片机]
平凡<font color='red'>单片机</font>教学 第六讲 <font color='red'>单片机</font>内部结构分析(五)
51单片机 定时器时钟
1.main.c 注:Sec,Min,Hour可不进行赋值 #include REGX52.H #include Delay.h #include LCD1602.h #include Timer0.h unsigned char Sec=55,Min=59,Hour=23; void main() { LCD_Init(); Timer0Init(); LCD_ShowString(1,1, Clock: ); LCD_ShowString(2,1, : : ); while(1) { LCD_ShowNum(2,1,Hour,2); LCD_Sh
[单片机]
51单片机简介及最小系统模块介绍
补充:51单片机开发基础0中使用的软件是KEIL5和Protuse8.9,这两个软件都可以下载到,其中KEIL5是集成开发环境,Protuse8.9在之前的模拟电子技术中用到过。 1.1 51单片机简介 这一部分采用STC公司生产的STC89C52RC单片机为例来讲解51单片机的开发,STC89C52RC采用MCS-51核,在原有的基础上增加了许多功能,例如串口下载程序,8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。支持2种软件可选择节
[单片机]
51<font color='red'>单片机</font>简介及最小系统模块介绍
单片机入门第一课:点亮一个发光二极管
单片机入门第一课 点亮一个发光二极管 我们先打开 keic51软件,把程序写进去。 先看程序吧,很简单。就是让单片机点亮嘛。简单的很。 #include sbit D1=P1^0; void main() { D1=0; } 这个程序写好后,然后编译成hex文件。基本上就差不多了。 简单的讲解下这个程序(入门第一课啊) 我们如何用单片机点亮一个led灯呢??? 先看下电路图吧,要不然打死你,你也不知道为什么这样就能点亮我们的led灯。这里的led灯的负极通过 74hc573接到了单片机的p1 口。我们要想点亮它,就把p1口的某一个口为0,(电平为0)就可以点亮它,有这个思路,看我们的程序。 #includ
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved