发新帖我要提问
12
返回列表
打印
[其他ST产品]

STM32CubeMX串口通讯

[复制链接]
楼主: t61000
手机看帖
扫描二维码
随时随地手机跟帖
21
t61000|  楼主 | 2023-1-27 11:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
代码解析

其实也没什么可以说的。就讲解一下中断服务函数部分。
__HAL_UART_GET_FLAG()

    (1)因为串口中断由多种行为引起,比如主控发送数据可以引起,主控接收到数据也可以引起。所以我们需要知道到底是那种行为引起的中断。

    (2)一般只要了解接收中断即可,所以我只讲接收中断部分。

使用特权

评论回复
22
t61000|  楼主 | 2023-1-27 11:52 | 只看该作者
        if(__HAL_UART_GET_FLAG( &huart1, UART_FLAG_RXNE ) != RESET)
        {               
        }

使用特权

评论回复
23
t61000|  楼主 | 2023-1-27 11:56 | 只看该作者
(1)huart1就是你在串口初始化的时候STM32CubeMX定义的。你复制后面这个部分写在huart1位置即可。

(2)后面的UART_FLAG_RXNE表示接收中断。

(3)如果是接收中断,__HAL_UART_GET_FLAG()将会返回SET,如果不是接收中断返回RESET。这个if就是用来判断是否为接收中断,如果是接收中断进入if语句。

使用特权

评论回复
24
t61000|  楼主 | 2023-1-27 11:58 | 只看该作者

READ_REG()和WRITE_REG()

这个不是函数,是宏定义。我们鼠标点击READ_REG,然后按F12。即可查看他的定义。

    #define WRITE_REG(REG, VAL)   ((REG) = (VAL))
     
    #define READ_REG(REG)         ((REG))

使用特权

评论回复
25
t61000|  楼主 | 2023-1-27 11:58 | 只看该作者
(1)其实这个就是直接寄存器操作,操作DR寄存器。

(2)无论是发送的数据还是接收的数据我们都存放在DR寄存器中,如果是发送数据,那么就让DR寄存器写入数据。如果是接收数据,那么就将DR寄存器的数据存入变量中。

(3)所以READ_REG()是读取数据,WRITE_REG()是发送数据。

使用特权

评论回复
26
t61000|  楼主 | 2023-1-27 11:59 | 只看该作者

使用特权

评论回复
27
t61000|  楼主 | 2023-1-27 12:00 | 只看该作者
如果要更改发送接收数据的串口怎么办?
/*****usart.c*****/
UART_HandleTypeDef huart1;  //假如这个是串口1的结构体
UART_HandleTypeDef huart2;  //假如这个是串口2的结构体

/***stm32f1xx_it.c***/

void USART1_IRQHandler(void)  //串口1中断函数
{
  uint8_t ch=0;
  
        if(__HAL_UART_GET_FLAG( &huart1, UART_FLAG_RXNE ) != RESET)
        {               
    ch=( uint16_t)READ_REG(huart1.Instance->DR);
    WRITE_REG(huart1.Instance->DR,ch);

        }
}

void USART2_IRQHandler(void) //串口2中断函数
{
  uint8_t ch=0;
  
        if(__HAL_UART_GET_FLAG( &huart2, UART_FLAG_RXNE ) != RESET)
        {               
    ch=( uint16_t)READ_REG(huart2.Instance->DR);
    WRITE_REG(huart2.Instance->DR,ch);

        }
}

使用特权

评论回复
28
t61000|  楼主 | 2023-1-27 12:02 | 只看该作者
实验
软件准备

需要一个串口工具。gitee仓库自取

使用特权

评论回复
29
t61000|  楼主 | 2023-1-27 12:03 | 只看该作者
材料准备

需要一个TTL转串口模块。TX——RX,GND——GND,3.3——3.3。

使用特权

评论回复
30
t61000|  楼主 | 2023-1-27 12:05 | 只看该作者


实验结果

电脑发送什么,单片机就回什么。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则