串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。
while (1)
{
HAL_UART_Transmit(&huart1,TEMP,5,50);
}
根据编程实际自行查看函数库
下面将以实例讲解串口的应用
首先我们可以先在cubemx初始化模块代码这部分内容比较简单。然后在main.c中编写
uint8_t temp0[]="HELLO,WORLD!\r\n";
uint8_t temp1[]="LED1 OPEN!\r\n";
uint8_t temp2[]="LED1 CLOSE!\r\n";
uint8_t temp=0;
先定义字符串,变量声明
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
HAL_UART_Transmit(&huart1,temp0,sizeof(temp0),10000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);
HAL_UART_Receive_IT(&huart1,&temp,1); //串口接收中断函数
main.c的初始化代码不用写在while里
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1)
{
if(temp == 0xA1)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
HAL_UART_Transmit(&huart1,temp1,sizeof(temp1),10000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);
HAL_UART_Receive_IT(&huart1,&temp,1);
}
else if(temp == 0xA2)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
HAL_UART_Transmit(&huart1,temp2,sizeof(temp2),10000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);
HAL_UART_Receive_IT(&huart1,&temp,1);
}
}
}
串口回调函数只要使用了串口中断函数直接编写回调函数的内容就可以进入中断并且执行回调函数的功能,因为每执行一次中断函数都会进入回调,所以这里需要使用两次 HAL_UART_Receive_IT(&huart1,&temp,1);
需要工程文件可自行下载进行学习