通过修改stm32官方的VCP例程设计了一个向PC发送数据的程序,起初工作正常但是一段时间后会进入HardFault。后来查明是因为在EP1_IN_Callback中发送数据越界导致的。而造成数据越界则是因为在CTR_LP函数中的while (((wIstr = _GetISTR()) & ISTR_CTR) != 0)循环无法跳出,不停调用EP1_IN_Callback发送64字节数据最终累计到数组越界进入HardFault。请问wIstr = _GetISTR()这个是由硬件来决定的么?正常情况下会出现该问题么?谢谢各位。
一周热门 更多>