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

STM32:TTL串口调试

一.TTL串口概要

        TTL只需要两个线就可以完成两个设备之间的双向通信,一个发送电平的I/O称之为TX,与另一个设备的接收I/O口RX相互连接。两设备之间还需要连接地线(GND),这样两设备就有相同的0V参考电势。

二.TTL串口调试

        实现电脑通过STM32发送指令来控制红绿小灯的亮灭。

        电脑输入"R0"红灯灭,"R1"红灯亮;"B0"蓝灯灭,"B1"蓝灯亮;"G0"绿灯灭,"G1"绿灯亮

 注:案例使用STM32F103CT6芯片,KEYSKING教程的开发板套件。开发板接口图如下

在CubeIDE中,设计面板->属性分类->connectivity中有3个USART。

意思为:Universal Synchronous/Asynchronous  Receiver & Transmitter 。 通用同步/异步收发器。其中TTL串口就用的是异步通信Asynchronous。因此可以也缩写成UART。

在设计面板中根据开发板说明找到串口TX,即PA2。设置串口通信,根据自身设置的属性在connectivity找到对应的USART并设置节点模式为异步。

我们可以在属性详情看到波特率(Baud Rate)为115200bits/s,意味着每秒可以发送 11520个字节。两个设备要相同的波特率才能正常通信

因为字节长度(Word Length)有8个比特位bit,发送一个字节数据需要在字节开头和结尾分别增加一个起始位和停止位共10bit

其他属性校验位为NONE,停止位为1.保持默认即可。设置完成后可以在设计界面中看见另一个收/发串口也被默认复制成相同的配置了。同时根据开发板说明找到红绿蓝灯的接口,设置为GPIO_OUTPUT。保存生成新的代码:

其中示例关于:

  MX_USART2_UART_Init();  //是系统自动生成的代码,用来初始化UART的

  HAL_UART_Receive(huart, pData, Size, Timeout)  //UART接收数据,参数串口类型,接收数据的变量地址,接收数据的变量的字节大小,最大延迟时间
  HAL_UART_Transmit(huart, pData, Size, Timeout) //UART发送数据

关键代码main函数:

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */
  uint8_t  recvDate[2];
  /* USER CODE END 2 */

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

	  HAL_UART_Receive(&huart2, recvDate, 2, HAL_MAX_DELAY);
	  HAL_UART_Transmit(&huart2,recvDate,2, 100);
	  GPIO_PinState pinstate= GPIO_PIN_RESET;
	  if(recvDate[1] == '1'){
		  pinstate = GPIO_PIN_SET;
	  }
      //我把红绿蓝的接口标签命名为了redLED,greenLED,blueLED
	  if(recvDate[0] == 'R'){
		  HAL_GPIO_WritePin(redLED_GPIO_Port, redLED_Pin, pinstate);
	  }else if(recvDate[0] == 'B'){
		  HAL_GPIO_WritePin(blueLED_GPIO_Port,blueLED_Pin, pinstate);
	  }else if(recvDate[0] == 'G'){
		  HAL_GPIO_WritePin(greenLED_GPIO_Port,greenLED_Pin, pinstate);
	  }
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

三.用开源网页进行调试验证

将代码build进单片机中。登录开源网址进行调试:波特律动 串口助手

  1. 登录网址,点击左下角的"选项"->常用驱动下载
  2. 根据自己的芯片类型下载驱动
  3. 根据代码中设置的串口属性,调整界面的串口属性面板,波特率特是要一致
  4. 点击串口连接,选择自己的需要连接的串口
  5. 发送数据,并将字符编码设置成ASCII码查看调试成果


http://www.kler.cn/a/106609.html

相关文章:

  • # 第20章 Cortex-M4-触摸屏
  • 【Vitepress报错】Error: [vitepress] 8 dead link(s) found.
  • 记录一下跨域的问题,讲讲跨域
  • K8S 查看pod节点的磁盘和内存使用情况
  • R语言贝叶斯分析:INLA 、MCMC混合模型、生存分析肿瘤临床试验、间歇泉喷发时间数据应用|附数据代码...
  • 利用python 检测当前目录下的所有PDF 并转化为png 格式
  • 计算机操作系统重点概念整理-第二章 进程管理【期末复习|考研复习】
  • 【ModbusTCP协议】
  • Spring Authorization Server 1.1 扩展实现 OAuth2 密码模式与 Spring Cloud 的整合实战
  • C++数据结构X篇_21_插入排序(稳定的排序)
  • FPGA与人工智能泛谈-01
  • 第五天:前端页面展示不出来
  • 分布式消息队列:Rabbitmq(2)
  • Ant Design Pro【面包屑导航】二级路由和三级路由都有component的情况,三级不显示component的页面,怎么解决?
  • matlab simulink 四旋翼跟拍无人机仿真
  • Non-constant range: argument must be an integer literal
  • vue3中刷新当前页面的三种方法
  • 简述一下伪共享的概念以及如何避免
  • 记录:获取windows当前登录的用户信息
  • R语言的物种气候生态位动态量化与分布特征模拟实践技术
  • P1868 饥饿的奶牛
  • 2023深耕kotlin,谈谈前景
  • webgl速记之如何根据用户硬件进行性能模式OR质量模式的切换的设计思路
  • Jetpack:019-Jetpack的导航二(传递数据)
  • 基于大数据的时间序列股价预测分析与可视化 - lstm 计算机竞赛
  • 如何做好建筑翻译呢