要求:两个按键K1、K2分别接在PC0和PD12上,试编写程序实现当PC0按下时数码管显示的数字加1,K2按下时数码管显示的数字减1的功能。当加到9时绕回到0,当减小到0时绕回到9#include"stm...
要求:两个按键K1、K2分别接在PC0和PD12上,试编写程序实现当PC0按下时数码管显示的数字加1,K2按下时数码管显示的数字减1的功能。当加到9时绕回到0,当减小到0时绕回到9
#include "stm32f10x.h"
unsigned char DispCode[]={0xc0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90};
void LED_Configuration(void){
GPIO_InitTypeDef Init;
Init.GPIO_Pin = GPIO_Pin_All;
Init.GPIO_Mode = GPIO_Mode_Out_PP;
Init.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&Init);
}
void KEY_GPIO_Configuration()
{
GPIO_InitTypeDef Init;
Init.GPIO_Pin=GPIO_Pin_13;
Init.GPIO_Mode=GPIO_Mode_IPU;
Init.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOD,&Init);
Init.GPIO_Pin=GPIO_Pin_12;
Init.GPIO_Mode=GPIO_Mode_IPU;
Init.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOD,&Init);
}
void DelayMs(u32 ms){
int i=0;
while(ms--){
for(i=0;i<5000;i++);
}
}
int main(void){
int i=0;
KEY_GPIO_Configuration();
LED_Configuration();
while(1){
if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_13)==0) //(GPIOC->IDR&1<<0)
{
DelayMs(10);
if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_13)==0){
while(!(GPIOD->IDR&1<<13))
i++;
if(i>9)
i = 0;
GPIOA->ODR = DispCode[i];
DelayMs(1);
}
}
if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_12)==0) //(GPIOD->IDR&1<<12)
{
DelayMs(10);
if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_12)==0){
while(!(GPIOD->IDR&1<<12));
i--;
if(i<0)
i = 9;
GPIOA->ODR = DispCode[i];
DelayMs(1000);
}
}
}
}
哪错了
展开