我是STM32初学者。在学习使用GPIO_ReadInputDataBit()时,不论按键是否按下结果不变,也就是检测脚始终为0,百思不得其解;希望得到高手指点。
以下是程序
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stm32f10x.h>
#include <stm32f10x_it.h>
#include <stm32f10x_conf.h>
#define led1 GPIO_Pin_0
#define led2 GPIO_Pin_1
#define led3 GPIO_Pin_2
#define led4 GPIO_Pin_3
#define led5 GPIO_Pin_4
#define led6 GPIO_Pin_5
#define led7 GPIO_Pin_6
#define led8 GPIO_Pin_7
#define led_turn1 GPIO_WriteBit(GPIOB,led1,(BitAction)!GPIO_ReadOutputDataBit(GPIOB,led1))
#define led_turn2 GPIO_WriteBit(GPIOB,led2,(BitAction)!GPIO_ReadOutputDataBit(GPIOB,led2))
#define led_turn3 GPIO_WriteBit(GPIOB,led3,(BitAction)!GPIO_ReadOutputDataBit(GPIOB,led3))
#define led_turn4 GPIO_WriteBit(GPIOB,led4,(BitAction)!GPIO_ReadOutputDataBit(GPIOB,led4))
void Clock_init()
{
RCC_APB2PeriphClockCmd( RCC_APB1Periph_PWR| RCC_APB1Periph_BKP |
RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
}
void B_init()
{ GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void A_init()
{ GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
void delay_ms(unsigned int Counter)
{ unsigned int i;
for(;Counter!=0;Counter--)
{ i=1000; //1ms 10301
while(i--);
}
}
int main (void)
{ u8 read5,read6,read7;
Clock_init();
A_init();
B_init();
// GPIO_SetBits(GPIOA,GPIO_Pin_All);
while(1)
{ //read5=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5);
read5=GPIOA->IDR&GPIO_Pin_5;
read6=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6);
read7=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7);
if(read5==0){GPIO_SetBits(GPIOB,GPIO_Pin_14);}
if(read6==0){GPIO_SetBits(GPIOB,GPIO_Pin_15);}
if(read7==0){GPIO_ResetBits(GPIOB,GPIO_Pin_15);}
led_turn1;
led_turn2;
led_turn3;
led_turn4;
delay_ms(500);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>