在进入Power_shutdown前,想关闭串口,使用
UART_readCancel(uart_lora);
UART_writeCancel(uart_lora);
UART_close(uart_lora);
程序进入hardfault。
YiKai Chen:
有沒有先確認uart_lora是否為null
Susan Yang:
试试下面的代码:
void UartApp__Close(void)
{ UART_Params uartParams;UART_close(hUART);
/* Call driver init functions */UART_init();
/* Set UART to default parameters. */UART_Params_init(&uartParams);hUART = UART_open(Board_UART0, &uartParams);
if (hUART == NULL){/* UART_open() failed */while (1);}UART_close(hUART);
}
ERIC ZOU:
回复 YiKai Chen:
不为null
ERIC ZOU:
回复 Susan Yang:
第一个UART_close(hUART);会有问题的
YiKai Chen:
回复 ERIC ZOU:
可以貼上你会有问题的代码?
ERIC ZOU:
回复 YiKai Chen:
我发现问题在接收回调函数,回调函数中执行了UART_read(handle, buffer, size);,调用UART_readCancel(uart_lora);后,系统一直重复进入回调函数,导致最后出错。如果是这个问题,那接收回调该怎么设计呢?