因HAL库运行效率慢,所以串口部分使用LL库,LL库更底层
工程设置
1、开启串口中断

image
2、串口使用LL库

image
程序设置
1、设置中断回调
void LLx_UART2_RxCpltCallback(unsigned char data)
{
ReceiveData(&wirless_dev, data);
}
2、设置串口中断
void USART2_IRQHandler(void)
{
/* USER CODE BEGIN USART2_IRQn 0 */
extern void LLx_UART2_RxCpltCallback();
volatile unsigned char data;
data = USART2->DR;
LLx_UART2_RxCpltCallback(data);
LL_USART_ClearFlag_RXNE(USART2);
/* USER CODE END USART2_IRQn 0 */
/* USER CODE BEGIN USART2_IRQn 1 */
/* USER CODE END USART2_IRQn 1 */
}
3、设置串口发送函数
static void uart2_DataOut(uint8_t * data, uint16_t datasize)
{
for (uint8_t a = 0; a < datasize; a++)
{
while(!LL_USART_IsActiveFlag_TXE(USART2)){};
LL_USART_TransmitData8(USART2,*(data + a));
}
}
4、打开串口中断
LL_USART_ClearFlag_RXNE(USART2);
LL_USART_EnableIT_RXNE(USART2);
注意:进中断一定要清中断!!!!