当前位置: 首页 > news >正文

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)

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

 

相关文章:

  • RTX NVIDIA 3090卡配置对应pytorch,CUDA版本,NVIDIA驱动过程及问题整理
  • MATLAB基本语句
  • 【最基础最直观的排序 —— 冒泡排序算法】
  • 基础漏洞——SSRF
  • 【FasAPI】使用FastAPI来实现一个基于RBAC(基于角色的访问控制)的用户权限控制系统
  • 【算法精解】逆序对受限的方案数
  • 银河麒麟桌面操作系统如何添加WPS字体
  • ControllerAdvice定义统一异常处理
  • 【力扣 | SQL题 | 每日三题】力扣175, 176, 181
  • CloudMusic:免费听歌
  • python功能测试
  • Tableau|一入门
  • error -- unsupported GNU version gcc later than 10 are not supported;(gcc、g++)
  • 网络编程(6)——发送的时序性,全双工通信
  • 一个 Java 语言简化处理 PDF 的框架,提供了一套简单易用的 API 接口,满足多样化需求又能简化开发流程的处理方案(附教程)
  • 「译」Node.js Streams 基础
  • C++11: atomic 头文件
  • leetcode98. Validate Binary Search Tree
  • OSS Web直传 (文件图片)
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Redis中的lru算法实现
  • tensorflow学习笔记3——MNIST应用篇
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue-cli3搭建项目
  • vue自定义指令实现v-tap插件
  • 阿里云应用高可用服务公测发布
  • 搭建gitbook 和 访问权限认证
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 面试遇到的一些题
  • 通信类
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 我从编程教室毕业
  • 项目实战-Api的解决方案
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​2021半年盘点,不想你错过的重磅新书
  • (pojstep1.3.1)1017(构造法模拟)
  • (纯JS)图片裁剪
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)为C# Windows服务添加安装程序
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .describe() python_Python-Win32com-Excel
  • .gitignore不生效的解决方案
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET开源、简单、实用的数据库文档生成工具
  • .NET开源快速、强大、免费的电子表格组件
  • [ C++ ] STL---仿函数与priority_queue
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [000-01-030].Zookeeper学习大纲
  • [Android Pro] AndroidX重构和映射
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [BZOJ1178][Apio2009]CONVENTION会议中心