STM32_HAL库串口通信(主函数内Usart轮询)操作指令(基于CubeMX软件)

发布于 2024-02-22  45 次阅读


USART初始化

MX_USART2_UART_Init();
//USART初始化代码(自动生成)

USART发送程序

HAL_UART_Transmit(UART_HandleTypeDef*huart,uint8_t*pData,uint16_t Size,uint32_t Timeout)
//串口发送函数 
//第一位填写串口指针 例如  &huart2    
//第二位填写发送信息的指针 如数组message  需要char message[]="word";且强行转为(uint8_t*)
//第三位为数组长度   可用strlen(message)  需要声明<string.h>
//第四位为超时时间  可填100(100ms) HAL_MAX_DELAY(一直等待)

char message[]="hallo world";
while(1){
HAL_UART_Transmit(&huart2,(uint8_t*)message,strlen(message),100)
}
//示例程序

USART接收程序

HAL_UART_Receive(&huart2,receiveData,2,HAL_MAX_DELAY);
//需要配置 uint8_t receiveData[2];

 
//示例程序 串口控制LED三色灯
GPIO_PinState state=GPIO_PIN_SET;
//定义state为GPIO_PinState中的GPIN_PIN_SET
if ( receiveData[1]=='0')
//判断接受第二位字符为0
{
  state=GPIO_PIN_RESET;
  //定义state为GPIO_PinState中的GPIN_PIN_RESET
}
if (receiveData[0]=='R')
//判断接受第一位字符为R
{
  HAL_GPIO_WritePin(LED_RED_GPIO_Port,LED_RED_Pin,state);
  //将Red端口的高低电平赋值
}else if(receiveData[0]=='G')
//判断接受第一位字符为G
{
  HAL_GPIO_WritePin(LED_GREEN_GPIO_Port,LED_GREEN_Pin,state);
  //将GREEN端口的高低电平赋值
} else if(receiveData[0]=='B')
//判断接受第一位字符为B
{
  HAL_GPIO_WritePin(LED_BLUE_GPIO_Port,LED_BLUE_Pin,state);
  //将BLUE端口的高低电平赋值
}

届ける言葉を今は育ててる
最后更新于 2024-02-22