某个地方不是原子操作? 编译优化参数是-O3或者-O2吗, 先改成-O0
再给怀疑出问题的地方前后加上__disable_irq(); __enable_irq();
试试?
【 在 dismoon 的大作中提到: 】
已知:
void TIM3_IRQHandler(void) //State Process
{
static unsigned char j=0;
(*p_STA_Function)(&j);
TIM3->SR&=0xFFFE;
}
时钟3里执行一个指向某个函数的指针的函数
void fn_STA_PreStabilize(unsigned char *i)
{
(*i)++;
if ((*i)>10)
{
(*i)=0;
p_STA_Function=fn_STA_RetroStabilize;
}
}
时钟里的函数指针指向该函数,然后该函数会修改指向自己的指针,只向另一个函数
问题:
我在时钟3最后一个语句
TIM3->SR&=0xFFFE;
添加一个中断调试点,一步一步执行,程序可以跑通
然后去掉这个调试点,直接跑,立刻跑飞到hardfault handler的错误向量里面
求助。
--
FROM 124.16.226.*