#include "stm32f10x.h"
#include "delay.h"
#include "io.h"
#include "sys.h"
void key_init(void)
{
u16 num,GPIOA_date,i;
GPIOA_date =GPIO_ReadInputData(GPIOA);
num=GPIOA_date & 0x001f;
switch(num)
{
case 0:{
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}
break;
case 1:
{
for(i=0;i<4;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 2:
{
for(i=0;i<8;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 3:
{
for(i=0;i<12;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 4:{
for(i=0;i<16;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 5:{
for(i=0;i<20;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 6:{
for(i=0;i<24;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000) ;
}break;
case 7:{
for(i=0;i<30;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 8:{
for(i=0;i<34;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 9:{
for(i=0;i<38;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 10:{
for(i=0;i<42;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 11:{
for(i=0;i<47;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 12:{
for(i=0;i<50;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 13:{
for(i=0;i<54;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 14:{
for(i=0;i<58;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 15:{
for(i=0;i<62;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 16:{
for(i=0;i<66;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 17:{
for(i=0;i<70;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 18:{
for(i=0;i<74;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 19:{
for(i=0;i<78;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 20:{
for(i=0;i<82;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 21:{
for(i=0;i<86;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 22:{
for(i=0;i<90;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 23:{
for(i=0;i<94;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 24:{
for(i=0;i<98;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 25:{
for(i=0;i<102;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 26:{
for(i=0;i<106;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 27:{
for(i=0;i<110;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 28:{
for(i=0;i<114;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 29:{
for(i=0;i<118;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
case 30:{
for(i=0;i<122;i++ )
{
delay_ms(1000);
}
Txd_signal = 0;
delay_ms(1000);
delay_ms(1000);
Txd_signal = 1;
delay_ms(1000);
delay_ms(1000);
}break;
}
}
程序大概情况是外部上升沿中断,STM32 识别键码值 进入相应的延时函数在CASE 2处为什么有时候是4秒有时候是5秒,别的也有不准的
|