最近换了ST的HAL库,在使用串口中断遇到了些问题 我的大致配置流程是这样的void MX_USART2_UART_Init(void)
{
huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
if (HAL_UART_Init(&huart2) != HAL_OK)
{
Error_Handler();
}
while(HAL_UART_Receive_IT(&huart2, &rxbuffer, 1) != HAL_OK);
//__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
} 这里是初始化串口2 然后开接收中断
void USART2_IRQHandler(void)
{
HAL_UART_IRQHandler(&huart2);
copy_IMU_data(rxbuffer);
while (HAL_UART_GetState(&huart2) != HAL_UART_STATE_READY);
//while(HAL_UART_Receive_IT(&huart2, &rxbuffer, 1) != HAL_OK);
} 这是串口2的中断处理 下面那句HAL_UART_Receive_IT我注调是因为发现如果执行了这句话他就一直在USART2_IRQHandler中出不去了
copy_IMU_data就是一个数据的复制 把接收到的一个字节复制到结构体内
运行后发现第一次进中断并跳出以后,程序就会跳到HardFault_Handler中去。。。
|