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)

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

相关推荐
可待电子单片机设计定制(论文)7 小时前
【STM32设计】基于STM32的智能门禁管理系统(指纹+密码+刷卡+蜂鸣器报警)(代码+资料+论文)
stm32·单片机·嵌入式硬件
不可思议迷宫8 小时前
Verilog编程实现一个分秒计数器
单片机·嵌入式硬件·fpga开发
life_yangzi10 小时前
关于单片机IAP升级的那点事儿|智能设置中断向量表
单片机·嵌入式硬件
了一li12 小时前
STM32实现一个简单电灯
stm32·单片机·嵌入式硬件
可待电子单片机设计定制(论文)14 小时前
【STM32设计】数控直流稳压电源的设计与实现(实物+资料+论文)
stm32·嵌入式硬件·mongodb
march_birds15 小时前
FreeRTOS 与 RT-Thread 事件组对比分析
c语言·单片机·算法·系统架构
小麦嵌入式15 小时前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
触角0101000117 小时前
STM32F103低功耗模式深度解析:从理论到应用实践(上) | 零基础入门STM32第九十二步
驱动开发·stm32·单片机·嵌入式硬件·物联网
昊虹AI笔记17 小时前
使用STM32CubeMX和Keil在STM32上创建并运行一个简单的FreeRTOS多任务程序
stm32·单片机·嵌入式硬件
王光环18 小时前
单片机使用printf,不用微库
单片机·嵌入式硬件