本人是个新手,按照原子哥的例子配置了一个外部中断,想通过这个中断去读传感器里的数据,但在程序启动后无法进入中断,手动的给中断引脚一个中断触发条件后,程序就能正常的跑起来,搞了两天了,也不知道是什么原因,希望高手指点!
以下是我中断函数:
extern signed char ADXL345[8];
void EXTI15_10_IRQHandler(void)
{
LED1=~LED1;
Multiple_read_ADXL345(ADXL345);//连续读出数据,存储在BUF中
EXTI-> R=1<<11; //清除LINE11上的中断标志位
}
//外部中断初始化程序
//初始化PA11为中断输入.
void EXTIX_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA时钟
RCC->APB2ENR|=1<<0; //开启辅助时钟
// AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
// AFIO->MAPR|=0X04000000; //关闭JTAG
GPIOA->CRH&=0XFFFF0FFF;//PA11设置成输入
GPIOA->CRH|=0X00008000;
GPIOA->ODR|=1<<11; //PA11上拉
Ex_NVIC_Config(GPIO_A,11,FTIR);//下降沿触发
MY_NVIC_Init(2,2,EXTI15_10_IRQChannel,2);//抢占2,子优先级1,组2
}
外部中断用的是PA11,连接的是传感器的中断引脚,传感器那头是当有数据更新时就会产生中断(即把传感器的中断引脚置高),然后中断服务函数里读完传感器更件的数据后,又会把传感器的中断引脚复位(即置高);
手动的给STM32中断引脚一个中断触发条件后,程序就能正常的跑起来,真搞不懂为什么第一次中断不能自动进入,请各高手指点!!
|