STM32F767 HAL库
裸机跑没有问题。
加入NANO 3.15 后 ,进入错误中断不做处理也会进入到硬件中断中
msh中提示的报警信息
debug中无法调试,进入错误回调后单步运行都只会在几个汇编命令之间跳转
psr: 0x01000036
r00: 0x00000003
r01: 0x20009838
r02: 0x00000183
r03: 0x00000000
r04: 0x0800046d
r05: 0x08017380
r06: 0x0801761d
r07: 0xdeadbeef
r08: 0xdeadbeef
r09: 0xdeadbeef
r10: 0xdeadbeef
r11: 0xdeadbeef
r12: 0x00000000
lr: 0x0800062b
pc: 0x080006e4
hard fault on handler
debug event
错误处 汇编地址代码:0x080006e4
0x080006E4 BEAB BKPT 0xAB
0x080006E6 BD08 POP {r3,pc}
0x080006E8 4901 LDR r1,[pc,#4] ; @0x080006F0
0x080006EA 2018 MOVS r0,#0x18
0x080006EC BEAB BKPT 0xAB
0x080006EE E7FE B 0x080006EE
0x080006F0 0026 DCW 0x0026
0x080006F2 0002 DCW 0x0002
0x080006F4 4800 LDR r0,[pc,#0] ; @0x080006F8
0x080006F6 4770 BX lr
0x080006F8 0070 DCW 0x0070
0x080006FA 2000 DCW 0x2000
0x080006FC 4800 LDR r0,[pc,#0] ; @0x08000700
0x080006FE 4770 BX lr
0x08000700 0070 DCW 0x0070
0x08000702 2000 DCW 0x2000
0x08000704 B510 PUSH {r4,lr}
0x08000706 F000F85F BL.W 0x080007C8 __rt_SIGABRT_inner
0x0800070A E8BD4010 POP {r4,lr}
0x0800070E F000B856 B.W 0x080007BE __sig_exit
__aeabi_memclr4:
请问有办法处理错误回调函数吗
这是HAL库的处理问题,还是NANO中要怎么操作进行处理。
我是想串口错误后发出灯闪烁报警。
如下串口错误回调函数代码
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(huart);
/* NOTE : This function should not be modified, when the callback is
needed,
the HAL_UART_ErrorCallback can be implemented in the user file.
不要在回调函数中重启,若一直发送错误波特率进入函数会卡死,导致看门狗复位
*/
// if((huart->ErrorCode & HAL_UART_ERROR_ORE) != 0U)
// if((huart->ErrorCode & HAL_UART_ERROR_FE) != 0U)
// if((huart->ErrorCode & HAL_UART_ERROR_NE) != 0U)
if(huart == &huart1)
{
uart1_error.ErrorCode = huart->ErrorCode;
uart1_error.Flag = 1;
// SERIAL1_SET;//mb发送串口1异常
}
if(huart == &huart2)
{
uart2_error.ErrorCode = huart->ErrorCode;
uart2_error.Flag = 1;
// SERIAL2_SET;//mb发送串口2异常
}
Use_Led_Setmode(2); //两闪两灭 提示串口挂掉
}
更多回帖