STM32
直播中

康辅佑

9年用户 1054经验值
擅长:控制/MCU
私信 关注
[问答]

为什么stm32f103zet6独立按键写了没反应?

void KEY_Init(void)    //IO³õʼ»¯
{
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//ʹÄÜPORTA,PORTEʱÖÓ

        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_4|GPIO_Pin_3;//KEY0-KEY1
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÉèÖóÉÉÏÀ­ÊäÈë
        GPIO_Init(GPIOE, &GPIO_InitStructure);//³õʼ»¯GPIOE4,3

        //³õʼ»¯ WK_UP-->GPIOA.0          ÏÂÀ­ÊäÈë
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0ÉèÖóÉÊäÈ룬ĬÈÏÏÂÀ­         
        GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯GPIOA.0

}
//°´¼ü´¦Àíº¯Êý
//·µ»Ø°´¼üÖµ
//mode:0,²»Ö§³ÖÁ¬Ðø°´;1,Ö§³ÖÁ¬Ðø°´;
//0£¬Ã»ÓÐÈκΰ´¼ü°´ÏÂ
//1£¬KEY0°´ÏÂ
//2£¬KEY1°´ÏÂ
//3£¬KEY3°´Ï WK_UP
//×¢Òâ´Ëº¯ÊýÓÐÏìÓ¦ÓÅÏȼ¶,KEY0>KEY1>KEY_UP!!
u8 KEY_Scan(u8 mode)
{         
        static u8 key_up=1;//°´¼ü°´ËÉ¿ª±êÖ¾
        if(mode)key_up=1;  //Ö§³ÖÁ¬°´                  
        if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
        {
                delay_ms(10);//È¥¶¶¶¯
                key_up=0;
                if(KEY0==0)return KEY0_PRES;
                else if(KEY1==0)return KEY1_PRES;
                else if(WK_UP==1)return WKUP_PRES;
        }else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1;            
        return 0;// ÎÞ°´¼ü°´ÏÂ
}

回帖(1)

夏日余晖

2024-3-20 17:19:11
STM32F103ZET6独立按键没有反应可能由多种原因造成。以下是一些可能的原因及解决方法:
按键电路连接问题:检查按键是否正确连接到STM32F103ZET6的对应引脚,以及按键电路中的电阻、电容等元件是否连接正确。如果连接错误或元件损坏,可能导致按键无法正常工作。
软件配置问题:检查STM32的GPIO端口配置是否正确。确保按键连接的GPIO端口被配置为输入模式,并且启用了内部上拉电阻(如果需要)。如果配置不正确,可能导致按键信号无法被正确读取。
程序逻辑问题:检查程序中按键检测的逻辑是否正确。确保在程序中正确检测了按键的按下和释放事件,并且处理逻辑没有错误。如果程序逻辑有误,可能导致按键事件无法被正确处理。
按键抖动问题:按键在按下和释放时可能会产生抖动,导致按键信号不稳定。在程序中添加去抖逻辑可以有效解决这个问题。可以使用定时器或延时函数来消除抖动,确保按键信号的稳定性。
硬件故障:如果以上都检查无误,可能是STM32F103ZET6的硬件故障导致的。可以尝试更换一个STM32芯片或重新焊接按键电路,看是否能解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分