下面是具体程序:
key,h
#ifndef __KEY_H
#define __KEY_H
#include<sys.h>
#define KE1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define KE2 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)
#define KE3 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)
#define KE4 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_12)
#define KEY1 1
#define KEY2 2
#define KEY3 3
#define KEY4 4
int KEY_Scan(void);
void KEY_Init(void);
#endif
key.c
#include<key.h>
#include<delay.h>
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);//ê1ÄüPORTCê±Öó
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_4|GPIO_Pin_11|GPIO_Pin_12;//PA ′ó×óμ½óòòà′ÎÎa1 2 3 4áD
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //éèÖÃéÏà-
GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉGPIOC
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//PC0-3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //éèÖÃ3éíÆíì
GPIO_Init(GPIOC, &GPIO_InitStructure);//3õê¼»ˉGPIOC
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//PC0-3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //éèÖÃ3éíÆíì
GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉGPIOA
}
void P1_Init(void)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_13);//μú1DD
GPIO_SetBits(GPIOA,GPIO_Pin_14);
GPIO_SetBits(GPIOA,GPIO_Pin_15);
GPIO_SetBits(GPIOC,GPIO_Pin_9);
}
void P2_Init(void)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_14);//μú2DD
GPIO_SetBits(GPIOA,GPIO_Pin_13);
GPIO_SetBits(GPIOA,GPIO_Pin_15);
GPIO_SetBits(GPIOC,GPIO_Pin_9);
}
void P3_Init(void)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_15);//μú3DD
GPIO_SetBits(GPIOA,GPIO_Pin_13);
GPIO_SetBits(GPIOA,GPIO_Pin_14);
GPIO_SetBits(GPIOC,GPIO_Pin_9);
}
void P4_Init(void)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_9);//μú4DD
GPIO_SetBits(GPIOA,GPIO_Pin_13);
GPIO_SetBits(GPIOA,GPIO_Pin_14);
GPIO_SetBits(GPIOC,GPIO_Pin_15);
}
int KEY_Scan(void)//é¨Ãè
{
P1_Init();//μú1DD
if(KE1==0) return 1;
else if(KE2==0) return 2;
else if(KE3==0) return 3;
else if(KE4==0) return 4;
P2_Init();//μú1DD
if(KE1==0) return 5;
else if(KE2==0) return 6;
else if(KE3==0) return 7;
else if(KE4==0) return 8;
P3_Init();//μú1DD
if(KE1==0) return 9;
else if(KE2==0) return 10;
else if(KE3==0) return 11;
else if(KE4==0) return 12;
P4_Init();//μú1DD
if(KE1==0) return 13;
else if(KE2==0) return 14;
else if(KE3==0) return 15;
else if(KE4==0) return 16;
return 0;
}
LED.h
#ifndef __LED_H
#define __LED_H
#include<sys.h>
#define LED1A PBout(5)
#define LED2A PBout(6)
#define LED3A PBout(7)
#define LED4A PBout(8)
#define LED5A PBout(9)
#define LED6A PBout(10)
#define LED7A PBout(11)
#define LED8A PBout(12)
#define LED9A PBout(13)
#define LED10A PBout(14)
#define LED11A PBout(15)
#define LED12A PBout(1)
#define LED1B PCout(0)
#define LED2B PCout(1)
#define LED3B PCout(2)
#define LED4B PCout(3)
#define LED5B PCout(4)
#define LED6B PCout(5)
#define LED7B PCout(6)
#define LED8B PCout(7)
#define LED9B PCout(8)
#define LED10B PCout(13)
#define LED11B PCout(10)
#define LED12B PBout(0)
void LED_Init(void);
#endif
LED.c
#include<led.h>
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE);
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_6|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//3õê¼»ˉGPIOB¸÷IO¿ú
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_13;//3õê¼»ˉGPIOC2μÄIO¿ú
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStruct);
}
main.c
#include<key.h>
#include<led.h>
#include<delay.h>
#include<sys.h>
int main(void)
{
u8 t;
KEY_Init();
LED_Init();
delay_init();
while(1)
{
t=KEY_Scan();
switch(t)
{
case 1ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=0,LED6A=1,LED7A=1,LED8A=0,LED9A=0,LED10A=0,LED11A=0,LED12A=0;break;//1
case 2ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=0,LED8A=1,LED9A=1,LED10A=0,LED11A=1,LED12A=0;break;//2
case 3ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=1,LED8A=1,LED9A=0,LED10A=0,LED11A=1,LED12A=0;break; //3
case 4ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=0,LED6A=1,LED7A=1,LED8A=1,LED9A=0,LED10A=1,LED11A=1,LED12A=0;break;//4
case 5ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=0,LED7A=1,LED8A=1,LED9A=0,LED10A=1,LED11A=1,LED12A=0;break;//5
case 6ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=0,LED7A=1,LED8A=1,LED9A=1,LED10A=1,LED11A=1,LED12A=0;break;//6
case 7ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=1,LED8A=0,LED9A=0,LED10A=0,LED11A=0,LED12A=0;break;//7
case 8ED1A=1;LED2A=1;LED3A=1;LED4A=0;LED5A=1;LED6A=1;LED7A=1;LED8A=1;LED9A=1;LED10A=1;LED11A=1,LED12A=0;break; //8
case 9ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=1,LED8A=1,LED9A=0,LED10A=1,LED11A=1,LED12A=0;break;//9
case 10ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=1,LED8A=1,LED9A=1,LED10A=1,LED11A=0,LED12A=0;break;//0
case 11:LED1A=0,LED2A=1,LED3A=1,LED4A=1,LED5A=1,LED6A=1,LED7A=1,LED8A=1,LED9A=1,LED10A=1,LED11A=0,LED12A=0;delay_ms(10);//0
LED1A=1,LED2A=0,LED3A=1,LED4A=1,LED5A=0,LED6A=1,LED7A=1,LED8A=0,LED9A=0,LED10A=0,LED11A=0,LED12A=0;delay_ms(10);//1
LED1A=1,LED2A=1,LED3A=0,LED4A=0,LED5A=1,LED6A=1,LED7A=0,LED8A=1,LED9A=1,LED10A=0,LED11A=1,LED12A=0;delay_ms(10);//2
LED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=1,LED8A=1,LED9A=0,LED10A=0,LED11A=1,LED12A=0;delay_ms(10);//3
LED1B=0,LED2B=1,LED3B=1,LED4B=1,LED5B=0,LED6B=1,LED7B=1,LED8B=1,LED9B=0,LED10B=1,LED11B=1,LED12B=0;delay_ms(10);//4
LED1B=1,LED2B=0,LED3B=1,LED4B=1,LED5B=1,LED6B=0,LED7B=1,LED8B=1,LED9B=0,LED10B=1,LED11B=1,LED12B=0;delay_ms(10);//5
LED1B=1,LED2B=1,LED3B=0,LED4B=1,LED5B=1,LED6B=0,LED7B=1,LED8B=1,LED9B=1,LED10B=1,LED11B=1,LED12B=0;delay_ms(10);//6
LED1B=1,LED2B=1,LED3B=1,LED4B=0,LED5B=1,LED6B=1,LED7B=1,LED8B=0,LED9B=0,LED10B=0,LED11B=0,LED12B=0;delay_ms(10);break;//7
}
}
}
程序运行之后数码管完全没反应。。。。开发板STM32F103RC,,,,求大佬解决急用!!!!万分感谢!!!
|