stm32 USART串口接收数据和处理的相关问题

包括两部分:接收数据和处理数据(一般是条件判断)
首先是接收数据:
我是用一个全局变量来把串口接收到的数据传递给main.c文件处理的。
具体步骤:
1.在包含接收中断函数的.c文件(例如usart.c)中声明一个变量(u8 flag;)
2.在main.c文件中声明(extern u8 flag;),之后便可以在main函数中根据flag值条件判断,做出相应功能。

其次是数据处理:
需要注意的是,串口通信是二进制位的通信,也可以说是16进制通信。我们通过串口发送给单片机芯片的数据或者是单片机通过串口发送给我们的数据都是以16进制传送的,在进行条件判断时也必须以16进制(hex)来判断。
例如
在这里插入图片描述
串口助手截图

串口助手发送(hex发送):01
单片机接收:0x01

串口助手发送(字符发送):1
单片机接收:0x31

可知:当我们选择“字符发送”时,发送的不是数字,条件判断不能用1或者0x01去匹配,只能用它转换的16进制数0x31去匹配
或者如果觉得输入16进制太麻烦,可以在串口助手接收区选择“hex显示”,就可以看到输入某个字符时它的16进制编码是多少,条件判断时匹配他的这个16进制编码就可以。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,关于stm32 usart2串口接收数据问题,您可以参考以下步骤: 1. 首先,需要初始化USART2串口,配置波特率、数据位、停止位等参数。可以使用STM32 HAL库提供的函数进行初始化,例如: ``` USART_HandleTypeDef huart2; huart2.Instance = USART2; huart2.Init.BaudRate = 115200; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_RX; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart2.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart2) != HAL_OK) { Error_Handler(); } ``` 2. 接着,需要开启USART2的中断,以便在接收到数据时触发中断服务程序。可以使用HAL库提供的函数进行中断配置,例如: ``` HAL_NVIC_SetPriority(USART2_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USART2_IRQn); __HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE); ``` 其中,USART2_IRQn是USART2的中断号,UART_IT_RXNE表示接收到数据触发中断。 3. 在中断服务程序中,可以读取接收缓冲区中的数据,例如: ``` void USART2_IRQHandler(void) { uint32_t isrflags = READ_REG(huart2.Instance->SR); uint32_t cr1its = READ_REG(huart2.Instance->CR1); if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET)) { uint8_t data = (uint8_t)(huart2.Instance->DR & 0x00FF); // 处理接收到的数据 } } ``` 其中,USART_SR_RXNE表示接收缓冲区非空标志位,USART_CR1_RXNEIE表示接收缓冲区非空中断使能位,huart2.Instance->DR表示USART2的数据寄存器。 以上就是关于stm32 usart2串口接收数据的基本步骤,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值