微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STM32按键检测

STM32按键检测

时间:10-02 整理:3721RD 点击:
大侠你们好,我刚刚学习STM32,这个程序为什么不工作
#include "stm32f10x.h"
#include "stm32_eval.h"
//#include <stdio.h>
#define        LED1_PIN               GPIO_Pin_6//?¨ò?LEDòy??
#define        LED2_PIN               GPIO_Pin_7
#define        LED3_PIN               GPIO_Pin_8
#define        LED4_PIN               GPIO_Pin_9
#define KEY3_PIN               GPIO_Pin_0

#define         GPIO_KEY               GPIOA
#define  RCC_GPIO_KEY1          RCC_APB2Periph_GPIOA
#define         GPIO_LED                GPIOF        //?¨ò?GPIO×é
#define  RCC_GPIO_LED           RCC_APB2Periph_GPIOF   
//#define LEDON_GPIO_CLK         RCC_APB2Periph_GPIOB //·??ù?÷LEDê1ó?μ?GPIOê±?ó*/
GPIO_InitTypeDef GPIO_InitStructure;
ErrorStatus HSEStartUpStatus;
void Delay(vu32 nCount)
{
  for(; nCount != 0; nCount--);
}
void KEY_GPIO_config(void)
{
        RCC_APB2PeriphClockCmd(RCC_GPIO_KEY1, ENABLE);/*ê1?üLEDμ?ê1ó?μ?GPIOê±?ó*/
        GPIO_InitStructure.GPIO_Pin = KEY3_PIN;//|LED2_PIN |LED3_PIN|LED4_PIN;  //????IOòy??
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//éè??é?à-ê?è?
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;  //?¨ò?ê±?ó
        GPIO_Init(GPIO_LED, &GPIO_InitStructure);          
}
void LED_cofing(void)
{       
        RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE);/*ê1?üLEDμ?ê1ó?μ?GPIOê±?ó*/
        GPIO_InitStructure.GPIO_Pin = LED1_PIN;//|LED2_PIN |LED3_PIN|LED4_PIN;  //????IOòy??
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//éè??í¨ó?í?íìê?3?
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //?¨ò?ê±?ó
        GPIO_Init(GPIO_LED, &GPIO_InitStructure);      //?¨ò?GPIO×é       
}
int main(void)
{
        LED_cofing();
  KEY_GPIO_config();
       
  GPIO_SetBits(GPIO_LED, LED1_PIN);  
        while(1)
        {
                if(GPIO_ReadInputDataBit(GPIOA,KEY3_PIN ==0))
                {
                        Delay(0xffff);
                        if(GPIO_ReadInputDataBit(GPIOA,KEY3_PIN ==0))
                        {
                                GPIO_ResetBits(GPIO_LED, LED1_PIN);                                
                  }
           }
        }
}

系统时钟什么的没配置吧

能编译通过吗?应该缺点什么吧?

编译没有问题啊

按键按下LED不工作。

配置了啊,按下不工作

这样 先不管按键 直接LED测试  看是哪个不对

程序挺长

这程序很长啊?

程序并不长,只是感觉没问题啊。

为什么不工作了。我很郁闷

LED灯是没有问题的

if(GPIO_ReadInState(GPIOA,GPIO_Key3_Pin==0))错了
应该是
if(GPIO_ReadInState(GPIOA,GPIO_Key3_Pin) == 0)

谢谢,确实是这个问题,谢谢您

这个错误,编译器的确不会报错

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top