關於STM32運行時程序卡在B.處的解決方法


文章轉載自:https://blog.csdn.net/u014470361/article/details/78780444

背景:
程序運行時,發現程序卡死在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.處,一般都是有中斷沒有處理,仔細檢查下相關中斷的配置和處理函數,找出錯誤即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM