void EXTIX_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PA
GPIOA->CRL&=0XFFFFFFF0; //A0
GPIOA->CRL|=0X00000008; //A0输入
GPIOA->ODR&=~(1<<0); //下拉
GPIOA->CRH&=0X0F0FFFFF;
GPIOA->CRH|=0X80800000; //A13 15输入
GPIOA->ODR|=1<<13; //上拉
GPIOA->ODR|=1<<15; //上拉
RCC->APB2ENR|=0x01;//使能io复用时钟
AFIO->EXTICR[0]&=~(0XF<<0);
AFIO->EXTICR[0]|=0<<0; //A0
AFIO->EXTICR[3]&=~(0XF<<4);
AFIO->EXTICR[3]|=0<<4; //A13
AFIO->EXTICR[3]&=~(0XF<<12);
AFIO->EXTICR[3]|=0<<12; //A15
EXTI->RTSR|=1<<0;
EXTI->FTSR|=1<<13;
EXTI->FTSR|=1<<15;
/* 加了这段硬件上的LED才有反应
EXTI->IMR|=1<<0;
EXTI->IMR|=1<<13;
EXTI->IMR|=1<<15;
*/
}
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
EXTIX_Init(); //外部中断初始化
while(1)
{ /**/
if(EXTI-> R&1<<0 || EXTI-> R&1<<13 || EXTI-> R&1<<5)
{
LED0=!LED0;
LED1=!LED1;
delay_ms(500);
EXTI-> R=1<<0;
EXTI-> R=1<<13;
EXTI-> R=1<<15;
}
}
}
这个程序,软件能进入 主函数 的if里面,但是硬件上灯但却不亮?
|