串口通信操作STM32f4单片机LED 蜂鸣器(io)
首先将串口与PC通信
单片机中串口1需要连接p6 中的PA9连接rxd PA10连接txd并使能相应io,io模式为挽推复用,复用为串口USART1(单片机串口1使用usb-串口与pc连接)。
在对串口和io初始化后,我们要对串口进行中断设置和优先级设置以便于我们处理串口发送的数据。
HAL_NVIC_EnableIRQ(USART1_IRQn); //使能 USART1中断通道
HAL_NVIC_SetPriority(USART1_IRQn,3,3); //抢占优先级 3,子优先级 3
下面开启中断,其参数含义为串口句柄,数据缓冲区指针,数据量。
HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer, RXBUFFERSIZE);
HAL库中有通用的中断处理函数,存在的意义是方便移植,他本身并不是中断函数的实现。
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);
这个函数进行了一些串口连接超时处理,而在其中HAL_UART_IRQHandler(&UART1_Handler);
此函数判断串口状态以及所属平台等(部分判断意义我不明)
状态正常则执行中断函数的实现HAL_UART_RxCpltCallback(huart);
一般的HAL库的中断处理函数只有上述一个入口,实现代码为