//key16.h
#ifndef _KEY16_H
#define _KEY16_H
#include "sys.h"
#include "stm32f10x.h"
#include <string.h>
#define KEY_row0_Pin GPIO_Pin_8
#define KEY_row1_Pin GPIO_Pin_9
#define KEY_row2_Pin GPIO_Pin_10
#define KEY_row3_Pin GPIO_Pin_11
void key_init();
char key_scan();
char key_row_scan();
#define KEY_CLO0_OUT_LOW GPIO_WriteBit(GPIOD,GPIO_Pin_8,Bit_RESET)
#define KEY_CLO1_OUT_LOW GPIO_WriteBit(GPIOD,GPIO_Pin_9,Bit_RESET)
#define KEY_CLO2_OUT_LOW GPIO_WriteBit(GPIOD,GPIO_Pin_10,Bit_RESET)
#define KEY_CLO3_OUT_LOW GPIO_WriteBit(GPIOD,GPIO_Pin_11,Bit_RESET)
#define KEY_CLO0_OUT_HIGH GPIO_WriteBit(GPIOD,GPIO_Pin_8,Bit_SET)
#define KEY_CLO1_OUT_HIGH GPIO_WriteBit(GPIOD,GPIO_Pin_9,Bit_SET)
#define KEY_CLO2_OUT_HIGH GPIO_WriteBit(GPIOD,GPIO_Pin_10,Bit_SET)
#define KEY_CLO3_OUT_HIGH GPIO_WriteBit(GPIOD,GPIO_Pin_11,Bit_SET)
#endif
//led.c
#include "led.h"
#include "stm32f10x.h"
#include "delay.h"
void led_init(){
GPIO_InitTypeDef GPIO_InitStruture;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //??PB???
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //??PE???
GPIO_InitStruture.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruture.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStruture.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruture);
GPIO_SetBits(GPIOB,GPIO_Pin_9);
GPIO_InitStruture.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruture.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStruture.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitStruture);
GPIO_SetBits(GPIOE,GPIO_Pin_0);
GPIO_InitStruture.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruture.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStruture.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitStruture);
GPIO_SetBits(GPIOE,GPIO_Pin_1);
}
void Led_shine(char key_num){//定义了闪烁函数,根据key_num的值LED1闪烁
int t;
switch(key_num){
case 1:
for(t=1;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 2:
for(t=2;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 3:
for(t=3;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 4:
for(t=4;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 5:
for(t=5;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 6:
for(t=6;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 7:
for(t=7;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 8:
for(t=8;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 9:
for(t=9;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 10:
for(t=10;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 11:
for(t=11;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 12:
for(t=12;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 13:
for(t=13;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 14:
for(t=14;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 15:
for(t=15;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
case 16:
for(t=16;t>0;t--){
LED1off;
delay_ms(250);
LED1on;
delay_ms(250);
}
break;
}
}
//led.h
#ifndef _LED_H
#define _LED_H
#include "sys.h"
#define LED1on GPIO_SetBits(GPIOE,GPIO_Pin_1)
#define LED1off GPIO_ResetBits(GPIOE,GPIO_Pin_1)
#define LED2 PEout(0)
#define LED3 PBout(9)
void led_init();
void Led_shine(char key_num);//声明了Led_shine函数
#endif
//main.c
#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
#include "key16.h"
#include "stdio.h"
#include "usart.h"
int main(void)
{
char key_num;
int t;
key_init();
led_init();
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
while(1)
{
key_num=key_scan();
if(key_num>0&&key_num<17){
printf("Button %d Pressed!\r\n",key_num);
printf("LED shine %d times!\r\n",key_num);
printf("<====This is a Line====>\r\n\r\n");
Led_shine(key_num);
}
}
}
Comments | NOTHING