STM32G431RBT6(蓝桥杯)串口(发送)

一、基础配置

(1)

PA9和PA10就是串口对应在单片机上的端口

注意:一定要先选择PA9的TX和PA10的RX,再去打开异步的模式

(2)

二、查看单片机的端口连接至电脑的哪里

(1)此电脑->右击属性
(2)找到端口

若有很多端口,不确定是哪一个端口,那就先把设备给取下,然后再插入,看多出哪个,哪个就是串口

三、打开串口助手

(1)串口助手在D盘的蓝桥杯速成(杨心愉)里面
(2)调试串口

要选一个是板子的串口号

打开串口之后这里就变红了

(3)还是原来的串口助手好用

四、代码 USART1

(1)简单理论讲解

UART是工作在异步的模式下,USART可以工作在同步和异步的模式下

复制代码
HAL_UART_Receive()

这个是通过查询的方式去接收数据

复制代码
HAL_UART_Receive_DMA()

这个是通过DMA的方式去接收数据

复制代码
HAL_UART_Receive_IT()

这个就是通过中断的方式去接收数据

发送数据也是同样

(2)简单代码
2.1 首先要定义一个数组

但是字符串的数据不能超过30,可以小于

复制代码
uint8_t temp_txbuffer[30]={"Real Magic Origin"};
2.2 执行语句
复制代码
 HAL_UART_Transmit (&huart1,temp_txbuffer,17,10);

首先是句柄,然后是数组的名称,再就是传输字符串的字符数,最后是超时时间(单位是毫秒)

复制代码
  /* USER CODE BEGIN 2 */
  uint32_t temp_cnt=0;
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  if (HAL_GetTick()-temp_cnt >1000)
	  {
		  
	      HAL_UART_Transmit (&huart1,temp_txbuffer,17,10);
		  
		  temp_cnt =HAL_GetTick();
	  }
	  
	  
  }

先定义一个初始数据,然后加一个判断条件,当单片机获取到的数值减去上一次获取到的数值大于1毫秒之后,再执行发送数据的指令。也就相当于是每过1毫秒发送一次数据

但是使用HAL_UART_Transmit()这个函数,因为传输的数据是17位,假设把115200变成9600,那么用1除以9600所算出来传输一个字符的时间就会变大(当然传输一个字符所需要的时间还要算上停止位、起始位、数据位,所以每次传输10个位),那么原来的延时10毫秒就会导致接收数据不完整,就只能一半一半的接收。又因为波特率是可以随时改变的,那么我们就应该要换一个函数

但是如果我们使用串口发送的中断函数,那么我们就不需要考虑后面的延时函数(DMA也是一样),这句函数就是执行完这句话的发送任务之后,就不需要等待10毫秒,它就会直接出来,完整的发送数据,这种叫非阻塞型发送方式,上面那一个就是阻塞型发送方式。阻塞型就是如果不等10毫秒,就不会执行下面的语句。就相当于刚发到O这个字母,正好10毫秒过去了,那么就开始过1秒之后再发送接下来的数据。(非阻塞型不太明白)

(3)代码基本注释

HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

这个需要知道接收数据的字符串长度及其时间

HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

这两个虽然不需要知道接收到的时间,但是需要知道接收到的长度,所以使用起来还是不是那么的方便

相关推荐
学习噢学个屁1 小时前
基于51单片机的超声波液位测量与控制系统
c语言·单片机·嵌入式硬件·51单片机
电鱼智能的电小鱼2 小时前
EFISH-SBC-RK3588无人机地面基准站项目
linux·网络·嵌入式硬件·机器人·无人机·边缘计算
电鱼智能的电小鱼2 小时前
基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
linux·网络·嵌入式硬件·数码相机·无人机·边缘计算
车载诊断技术3 小时前
不同ECU(MCU/ZCU/CCU)其部署(实现)的功能存在差异
单片机·嵌入式硬件·架构·汽车·电子电器架构·软件定义汽车的电子/电气
美好的事情总会发生3 小时前
32.768kHz晶振详解:作用、特性及与其他晶振的区别
嵌入式硬件·硬件工程·智能硬件
国科安芯5 小时前
面向高性能运动控制的MCU:架构创新、算法优化与应用分析
单片机·嵌入式硬件·安全·架构·机器人·汽车·risc-v
阿让啊5 小时前
C语言中操作字节的某一位
c语言·开发语言·数据结构·单片机·算法
电鱼智能的电小鱼8 小时前
基于 EFISH-SBC-RK3588 的无人机通信云端数据处理模块方案‌
linux·网络·人工智能·嵌入式硬件·无人机·边缘计算
Neil今天也要学习8 小时前
永磁同步电机控制算法-VF控制
单片机·嵌入式硬件
狄加山6759 小时前
STM32 I2C总线通信协议
stm32·单片机·嵌入式硬件