关于STM32L152 运行时程序卡在B.处的解决方法

来源:互联网 发布:淘宝高硼硅玻璃有毒吗 编辑:程序博客网 时间:2024/06/11 01:13

背景:

程序运行时,发现程序卡死在B.处。

解决方法:

程序卡死在B.处说明有中断没有处理,导致程序进入中断后无法跳出。

之后查看程序发现,程序中定义了一个中断,但是之前一次偶然把中断处理程序屏蔽了,导致没有中断处理函数。

程序如下:

//开启了EXTI15_10_IRQn中断

void nirq_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;


GPIO_InitStructure.Pin=GPIO_PIN_13;
GPIO_InitStructure.Mode=GPIO_MODE_IT_FALLING ;
GPIO_InitStructure.Pull  =GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(GPIOC,&GPIO_InitStructure);

HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
        HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}

//不小心把中断函数屏蔽了,如下:

//void EXTI15_10_IRQHandler(void)
//{
//  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
//}

把程序取消屏蔽后,程序正常运行了。

总结:程序卡死在B.处,一般都是有中断没有处理,仔细检查下相关中断的配置和处理函数,找出错误即可。


阅读全文
1 0
原创粉丝点击