一般的帖子,关于HardFault_Handler的错误很多人归类于堆栈溢出或者数值越界。我现在遇到的有点奇葩. 我的程序很简单,就在主程序里面翻滚一个IO,同时打开一个定时器中断,程序在大容量的IC里面运行没有问题, 但是在中容量的IC运行就出现HardFault_Handler的错误,即使都是同一个工程,所选的IC都是STM32F103C8,
中断服务程序如下: //**************************************************************************** //定时器2中断服务程序 //**************************************************************************** void TIM2_IRQHandler(void) //TIM3中断 { if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否 {
TIM_ClearITPendingBit(TIM2, TIM_IT_Update ); //清除TIMx更新中断标志 5ms // GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_8)));
WindRxTime++; BlueRxTime++; LedRxTime++; NoiseRxTime++; TimeMs++; } }
如果将中断的变量加1的代码屏蔽,程序也正常,感觉没有道理,难道变量溢出在中小容量的IC里面有限制?如果这样如何用? 这些变量目前都没有使用。即这样屏蔽: //WindRxTime++; //BlueRxTime++; //LedRxTime++; //NoiseRxTime++; //TimeMs++; 求大神解释下!
|