我有一个引导程序代码,其中我将通过USART发送/接收数据。我已将USART配置为在中断模式下运行。
USART功能可以独立运行。使用多个读/写实例对此进行了验证。
当我将USART代码与引导加载程序代码集成时,引导加载程序将继续检查是否有任何待读取的数据要从USART读取。
如果有任何待处理的数据,则引导加载程序将读取数据寄存器(DR)中已通过中断接收的数据。 (一种轮询+中断)
我的问题:
每当有USART接收中断被触发时,内部接收中断服务程序中都会发生硬故障错误。
PC表示其内部硬故障例程,可从DR读取数据。
但是我看到的一件奇怪的事是,从发生严重故障的位置,在反汇编中,我仅看到MRC2命令
是因为这个问题发生的? 0x8004802是我的硬故障命中的位置。
请给我启发
您正在编译或链接到为错误的目标CPU构建的代码,例如Cortex-A
:Cortex-M3
不实现任何Coprocessor 15
。因此,任何访问cp15
寄存器的指令都将无效并引起异常。对于GCC
,应使用选项-mcpu=cortex-m3
进行编译>