一般的帖子,关于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++;求大神解释下!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>