二、编程部分
2.1 串口通信相关库
主要数据类型:
UART_HandleTypeDefUartHandle;
主要HAL函数:
初始化函数:
HAL_StatusTypeDef HAL_UART_Init ( UART_HandleTypeDef * huart );
void HAL_UART_MspInit ( UART_HandleTypeDef *huart );
回调函数:
void HAL_UART_TxCpltCallback( UART_HandleTypeDef * UartHandle );
void HAL_UART_RxCpltCallback( UART_HandleTypeDef* UartHandle );
void HAL_UART_ErrorCallback( UART_HandleTypeDef*UartHandle )
操作函数:
HAL_StatusTypeDef HAL_UART_Transmit_IT( UART_HandleTypeDef*huart, uint8_t *pData, uint16_t Size );
HAL_StatusTypeDef HAL_UART_Receive_IT( UART_HandleTypeDef *huart,uint8_t *pData, uint16_t Size );
中断响应函数:
void USARTx_IRQHandler();
2.2 程序说明
PC向串口发送一串数据,串口每接收到一个字符就存缓冲区中,当缓冲区中存入结束标识后。串口将接收到的数据又发送回PC。
2.2.1 程序开始时要开启一次接收中断,这样才能接收到串口发来的数据
2.2.2 前面的配置已开启了串口的所有中断,串口在发送、接收、错误都会产生中断。
2.2.3 在MAIN函数中重新定义回调函数后,达到中断要求会自动调用重写的回调函数,所以重写回调函数名字与参数要与系统中一致。(之前自在全局中断中又调用了回调函数,运行就不对)。
2.3正式写程序(参数网上)
2.3.1 main.c中定义变量
不知道为什么,用注解掉的方法接收数据接收完后,一直在循环那里一直等待接收,不能完成,
2.3.2 重写回调函数
2.3.3 开接收中断,已方便接收
三、程序测试
发送字串,串口接收到后将收到的字串返回来。注意回调中要检查到的数据有回车符与换行符所以在输入的时候要加一个回车。