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);
}
}
}
}
#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)
谢谢,确实是这个问题,谢谢您
这个错误,编译器的确不会报错