还有这个中断函数好像没有诱发条件呀,函数中断怎么可以执行呀,好像没有中断条件呀:
#include "exti.h"
#include "led.h"
#include "key.h"
#include "delay.h"
#include "usart.h"
//u8 key = 4 ;
int t;
//外部中断0服务程序
void EXTI0_IRQHandler(void)
{
t = KEY_Scan();
delay_ms(20);//消抖
//key = 0;
if(t==1)
{
LED0=!LED0;
delay_ms(10);
}
EXTI->

R=1<<0; //清除LINE0上的中断标志位
}
//外部中断15~10服务程序
void EXTI1_IRQHandler(void)
{
delay_ms(20); //消抖
//key = 1;
if(t==2)
{
LED1=!LED1;
delay_ms(10);
}
EXTI->

R=1<<1; //清除LINE13上的中断标志位
}
void EXTI2_IRQHandler(void)
{
delay_ms(20); //消抖
//key = 2;
if(t==3)
{
LED2=!LED2;
delay_ms(10);
}
EXTI->

R=1<<2; //清除LINE13上的中断标志位
}
void EXTI3_IRQHandler(void)
{
delay_ms(20); //消抖
//key = 3;
if(t==4)
{
LED0=!LED0;
LED1=!LED1;
LED2=!LED2;
delay_ms(20);
}
EXTI->

R=1<<3; //清除LINE13上的中断标志位
}
//外部中断初始化程序
//初始化PA0,PA13,PA15为中断输入.
void EXTIX_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA时钟
GPIOA->CRL&=0XFFFF0000;//PA0-PA3设置成输入
GPIOA->CRL|=0X00008888;
GPIOA->ODR|=0x0F; //上拉
Ex_NVIC_Config(GPIO_A,0,FTIR);//下降沿触发
Ex_NVIC_Config(GPIO_A,1,FTIR);//下降沿触发
Ex_NVIC_Config(GPIO_A,2,FTIR);//下降沿触发
Ex_NVIC_Config(GPIO_A,3,FTIR);//下降沿触发
MY_NVIC_Init(2,1,EXTI0_IRQChannel,2); //抢占2,子优先级1,组2
MY_NVIC_Init(2,2,EXTI1_IRQChannel,2); //抢占2,子优先级2,组2
MY_NVIC_Init(2,3,EXTI2_IRQChannel,2); //抢占2,子优先级3,组2
MY_NVIC_Init(2,4,EXTI3_IRQChannel,2); //抢占2,子优先级4,组2
}
这是主函数
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口初始化
LED_Init(); //初始化与LED连接的硬件接口
EXTIX_Init(); //外部中断初始化
while(1)
{
}
}
整个键盘扫描函数就没有被引用到,键盘怎么起的作用呀
主函数:
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口初始化
LED_Init(); //初始化与LED连接的硬件接口
EXTIX_Init(); //外部中断初始化
while(1)
{
}
}