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)

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

相关推荐
阿拉斯攀登18 分钟前
51单片机概述
单片机·嵌入式硬件·51单片机
tang_shou24 分钟前
STM32CubeMx使用STM32F4系列芯片实现串口DMA接收
c语言·arm开发·stm32·单片机·嵌入式硬件·mcu·stm32cubemx
m0_5532100433 分钟前
stm32读取rtc年份错误问题,需要指定星期几
stm32·单片机
Jerry丶Li39 分钟前
NXP--S32K移植FreeRTOS
嵌入式硬件·rtos·nxp·s32k
q27551300421 小时前
PL27A1对拷线搭配 PTCB818A 设计资料 高速跨系统互传+键鼠共享一缆搞定
经验分享·单片机·嵌入式硬件·硬件架构·信号处理
Joshua-a1 小时前
SPI芯片选择(CS)引脚的深层作用:为什么必须直连MCU的GPIO?
单片机·嵌入式硬件
chenchen000000001 小时前
全志新一代“普惠”工业芯方案:HZ-T153_MiniEVM开发板评测
驱动开发·嵌入式硬件
云山工作室2 小时前
基于STM32的视力保护台灯设计与实现(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·音视频
雅欣鱼子酱2 小时前
【应用】单极高侧-电流检测芯片FP130A助力精密热电偶数据采集,输出非线性误差为±0.01%
单片机·嵌入式硬件
yrx0203072 小时前
使用A4950制作的步进电机驱动器&&mcu软件细分
stm32·步进电机