这几天遇到这样的一个问题,各种初始化都写好了,在函数中也能触发软件中断,问题是我把板子一通电系统就会打软件中断打开(软件中断没有连接外部IO),并自动的执行了中断函数,请问这是怎么回事?如何处理呢?先谢谢朋友们了
附上软件中断初始化程序,大家帮忙看看:
void Main_Init(void)
{
SystemInit(); //系统时钟等初始化
delay_init(72); //延时初始化
// NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600); //串口初始化为9600
Timer2_Init(50,7199); //任务调度定时器 定时10MS
GPIO_All_Init();
SoftWareHander_Config();
}
/*
* 函数名:SoftWareHander_Config
* 描述 :软件中断配置
* 输入 :无
* 输出 :无
* 调用 :内部调用
*/
void SoftWareHander_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟
EXTI_InitStructure.EXTI_Line =EXTI_Line0;
EXTI_InitStructure.EXTI_LineCmd =ENABLE;
EXTI_InitStructure.EXTI_Mode =EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Falling; //下降沿
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel =EXTI0_IRQn; //外部中断1
NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0X02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority =0X01;
NVIC_Init(&NVIC_InitStructure);
// EXTI_ClearITPendingBit(EXTI_Line0);
EXTI_ClearFlag(EXTI_Line0);
}
void EXTI0_IRQHandler(void)
{
if(EXTI_GetFlagStatus(EXTI_Line0) != RESET) //先判断是否使能中断,在判断标志位
{
OUTPUT_Col=1;
EXTI_ClearFlag(EXTI_Line0);
// EXTI_ClearITPendingBit(EXTI_Line0); //清楚中断标志位
}
} |