STM32f0按键模块电路经常遇到上电不复位的情况

发布者:EternalWhisper最新更新时间:2024-06-04 来源: elecfans关键字:STM32f0  按键模块  上电不复位 手机看文章 扫描二维码
随时随地手机看文章

描述:

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和外围电路均需要复位的情况,因此各个模块可能需要隔离测试,最终锁定问题才能找到解决的方法。


关键字:STM32f0  按键模块  上电不复位 引用地址:STM32f0按键模块电路经常遇到上电不复位的情况

上一篇:如何使用HCSR04和STM32F103ZET6制做超声波测距仪
下一篇:STM32单片机接收不定长度字节数据的方法解析

推荐阅读最新更新时间:2024-11-12 09:03

关于STM32F0的BOOT
关于STM32F0系列的启动配置,有人说有点看不太懂,貌似有两套启动方式,又是脚又是选项位的。其实,它跟其它STM32 系列一样也是有三种启动模式,只是配置方式上有其特色。 它有两种配置方式,第一种是利用BOOT0物理脚和Nboot1、Boot_Sel选项位来确定启动模式;第二种只使用Boot_Sel、Nboot1 、Nboot0 三个选项位来确定启动模式,完全省却了物理脚,多出一根脚给用户应用。 对于第一种配置方式,所有STM32F0系列的芯片都适用。第二种配置方式仅适用于STM32F04X和STM32F09X系列的器件。 下图是STM32F0系列启动模式配置表。 红色方框内就是上面所指的第一种配置方式,对所
[单片机]
关于<font color='red'>STM32F0</font>的BOOT
STM32F0非对齐访问引起的硬件错误及其排除
前段时间在用STM32L0芯片时遇到一个硬件错误,主要是内存的非对齐访问导致的。 注:CM3内核支持非对齐访问,而CM0不支持非对齐访问。 先科普一下,什么是非对齐访问 如上图所示,若要访问的变量是int、float、u32类型的(占4字节),则这些变量在内存中,只能以图中0、4、8为起始地址; 若要访问的变量是u16类型的(占2字节),则这些变量在内存中,只能以0、2、4、6、8、10为起始地址; 如上图所示,像*(u16 * )0x20000001这样读取数据的话,在CM0内核的芯片上就会直接进hardfault。 故事是这样的,我用了两片595来驱动数码管,用SPI方式。我想,反正一片595就是一个8
[单片机]
<font color='red'>STM32F0</font>非对齐访问引起的硬件错误及其排除
已解决STM32F0的stm32f0xx.h中没有CRH和CRL函数,该如何设置?
STM32F0的stm32f0xx.h中没有CRH和CRL函数,该如何设置 #define SDA_IN() {GPIOC- CRH&=0XFFFF0FFF;GPIOC- CRH|=8 12;} #define SDA_OUT() {GPIOC- CRH&=0XFFFF0FFF;GPIOC- CRH|=3 12;} 下面用库里面的引脚设置函数写成: void SDA_IN(void) { GPIO_InitTypeDef GPIO_InitStructure; //RCC- APB2ENR|=1 4;//先使能外设IO portc时钟 RCC_AHBPeriphClockCmd(RCC_AHBPeriph
[单片机]
STM32F0(9)串口初始化
// 只初始化了RX功能,因为之前没有用到Tx功能,所以没有配置 void PM25_UART2_Init(void) // 串口UART2初始化 { RCC- APB1ENR |= RCC_APB1ENR_USART2EN; // 串口时钟使能 RCC- AHBENR |= RCC_AHBENR_GPIOAEN; // 打开串口所对应的GPIO引脚时钟 GPIOA- AFR |= 0x00001000; // 开启复用功能的对应AFIO(对应截图) GPIOA- MODER |= GPIO_MODER_MODER3_1; // 开启GPIO复用模式 GPIOA- MODER &= ~GPIO_MOD
[单片机]
STM32F0单片机快速入门六 用库操作串口(UART)原来如此简单
1.从 GPIO 到 UART 前面几节我们讲了MCU如何启动,如何用翻转IO引脚,以及用按键去触发中断。接下来我们介绍的也是最常用的一个模块,串口(UART)。 串口可以说是最古老,而且生命力最强的一种通信接口了。RS485总线更是久经考验。虽然串口早已经从大多数PC的标配中去掉了,但是嵌入式系统跟上位PC机通信用的最多的应该还是通过串口转USB吧。 我们用 Keil 打开下面这个工程: STM32Cube_FW_F0_V1.11.0ProjectsSTM32F030R8-NucleoExamplesUARTUART_TwoBoards_ComPollingMDK-ARMProject.uvprojx 这个代码配置串口为 96
[单片机]
基于STM32F0芯片的代码实现及几点提醒
‍STM32系列的芯片里都有个特别的存储区---FLASH选项字区域,这里简单聊下该话题并顺便给出基于STM32F0芯片的代码实现及几点提醒。 这块特定的FLASH存储区域,通常用来存放有关芯片内部FLASH读保护、写保护、看门狗使能方式、芯片启动、RAM校验、电源监控等配置信息。具体内容以及格式因不同的STM32系列可能有差异。 一般来讲,各个选项字由选项字节组成,各选项字节由原始字节项和互补字节项组成。如下图存储方式,‍绿色栏为原始选项字节,黄色栏代码互补选项字节。不同系列可能有差异。【下文中截图如无特别说明,均是来自STM32F0芯片的参考手册。】 FLASH选项字一般安排在某固定地址起始的一块连续的地址空间。下
[单片机]
基于<font color='red'>STM32F0</font>芯片的代码实现及几点提醒
MSP430单片机输入/输出模块—通用I/O端口GPIO—LED&按键
一、原理图  ●MSP430F5529 LaunchPad实验板上仅有的两个独立按键和LED。 二、I/O端口常用操作C语言描述及常用C语言解析 1、MSP430头文件中的标准位  在每一个具体的430型号单片机的头文件中都可以找到(如msp430F5529.h)。 /************************************************************ * STANDARD BITS ************************************************************/ #define BIT0 (0x0001) #define B
[单片机]
MSP430单片机输入/输出<font color='red'>模块</font>—通用I/O端口GPIO—LED&<font color='red'>按键</font>
小广播
设计资源 培训 开发板 精华推荐

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

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

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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