Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1985|回复: 1

STM32CUBEMX开发03_UART(串口)

[复制链接]

9

主题

18

帖子

406

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
406
发表于 2023-7-9 21:05:02 | 显示全部楼层 |阅读模式

通过串口发送STM32
接收指令控制LED的开关
一、STM32CUBEMX基础配置

此处不讲,忘了的看http://eli-home.top/discuz/forum.php?mod=viewthread&tid=393&extra=page%3D1
二、STM32串口配置
点击Connectivity,选择USART1,选择Asynchronous,异步通信模式

点击Parameter Settings更改波特率,数据位,校验位,停止位等内容
这里我选择波特率115200,数据位8位,校验位0,停止位1

发送配置完成
接收我们采用中断接收
因此,要打开中断,设置中断优先级
点击NVIC Settings打开中断

点击左侧的System Core
点击NVIC
找到UART1的优先级配置将其配置为1
当两个中断同时发生时,优先处理中断中断优先级高的中断

接收配置完成
三、编写代码
在主函数内定义所要发送的内容

  1. uint8_t Str[] = {"STM32F103ZET6"};
复制代码

调用发送函数

  1. HAL_UART_Transmit(&huart1,Str,sizeof(Str),10000);
复制代码
编译下载,打开串口助手观察是否可以发送
接收部分
先定义一全局变量为接收缓冲区

  1. uint8_t Rx;
复制代码

由于我们采用中断接收,因此要编写中断服务函数

  1. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  2. {
  3.         if(huart->Instance == USART1 )
  4.         {
  5.                 switch(Rx)
  6.                 {
  7.                         case '1': HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,0);break;
  8.                         case '2': HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,1);break;
  9.                 }
  10.                 HAL_UART_Receive_IT (&huart1 ,&Rx ,1);
  11.         }
  12. }
复制代码
这里的if(){}是判断所产生的UART中断信号是由哪一个UART产生。huart->Instance == USART1 这句语句说明有USART1产生。
switch(Rx)
{
case '1': HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,0);break;
case '2': HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,1);break;
}
这是判断接收到的指令的值,并执行
HAL_UART_Receive_IT (&huart1 ,&Rx ,1);
这条语句是允许UART1接收中断,并将其接收的值存到Rx中,1的字节。在每一次进入到接收中断后都要重新打开否则无法连续接收。
主函数初始化完成后也要允许UART1接收中断。

  1. HAL_UART_Receive_IT(&huart1,&Rx,1);
复制代码
发送,接收代码编写完成,编译烧录验证



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

9

主题

18

帖子

406

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
406
 楼主| 发表于 2023-7-10 08:48:52 | 显示全部楼层
自己寻找一下串口重定向的方法(printf直接发送)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-4-5 04:00 , Processed in 0.040425 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表