CubeMX生成HAL库串口收发
串口发送(printf重定义)
在usart.c
中添加:
uint8_t u_buf[256];//printf需要的数组
在usart.h
中添加:
#include <stdio.h>
#define printf(...) HAL_UART_Transmit(&huart1, (uint8_t *)u_buf, sprintf((char*)u_buf, __VA_ARGS__), 0xffff)
extern uint8_t u_buf[256];//printf需要的数组
串口接收(发送给单片机)
在main.c
中添加:
#define USART1_ReceiveData_Length 1 //数组长度
uint8_t USART1_ReceiveData[USART1_ReceiveData_Length] = {0}; //串口接收数据数组
在main.c
中的main()
函数中开启接收中断:
MX_USART1_UART_Init(); //串口初始化
HAL_UART_Receive_IT(&huart1,USART1_ReceiveData, USART1_ReceiveData_Length); //使能串口接收中断,将接收数据的变量指针放入
在main.c
中添加串口回调函数,串口接收完成中断:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) //串口接收完成回调函数
{
printf("HAL_UART_RxCpltCallback");
HAL_UART_Receive_IT(&huart1,USART1_ReceiveData, USART1_ReceiveData_Length);//重装,否则下一次无法接收
}