ARM嵌入式学习笔记(8)串口通信

ARM嵌入式学习笔记(8)串口通信

串口介绍

串口全称为通用串行通信接口,是一种非常常用的通信接口。串行即以高低电平表示 1 和0,将数据一位一位顺序发送给接收方。通用串行通信接口有着协议简单,易于控制的优点。串口的通讯协议由开始位,数据位,校验位,结束位构成。一般以一个低电平作为一帧数据的起始,接着跟随 8 位或者 9 位数据位,之后为校验位,分为奇校验,偶校验和无校验,最后以一个先高后低的脉冲表示结束位,长度可以设置为 0.5,1,1.5 或 2 位长度。奇偶校验位的原理是统计发送数据中高电平即’1’的奇偶,将结果记录在奇偶校验位中发送给接收方,接收方收到奇偶校验位后和自己收到的数据进行对比,如果奇偶性一致就接受这帧数据,否则认为这帧数据出错。下图是一个 8 位数据位,1 位奇偶校验位,1 位结束位的串口数据帧。
在这里插入图片描述
一般进行串口通讯时,收发双方要保证遵守同样的协议才能正确的完成收发,除了协议要一致之外,还有一个非常重要的要素要保持一致,那就是通讯的速率,即波特率。波特率是指发送数据的速率,单位为波特每秒,一般串口常用的波特率有 115200,38400,9600 等。串
口的波特率和总线时钟周期(clock)成倒数关系,即总线时钟周期越短,单位时间内发送的码元数量越多,串口波特率就越高。

CubeMX配置

在这里插入图片描述
在这里插入图片描述
没啥好说的,记得把中断打开,方便我们接收。

程序代码

HAL_UART_Transmit(&huart1, (uint8_t *)"Hello", 10,1000);
HAL_UART_Transmit_IT(&huart1, (uint8_t *)"Hello", 10);

可以使用阻塞发送或者中断发送。
在这里插入图片描述
中断接收要先在while(1)之前使能中断接收。

HAL_UART_Receive_IT(&huart1, (uint8_t *)Rxbuf, 10);

然后找到回调函数

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if (huart->Instance == USART1)
    {
//此处为处理数据代码 
//此处为处理数据代码
//此处为处理数据代码
        HAL_UART_Receive_IT(&huart1, (uint8_t *)Rxbuf, 10);    // 使能串口接收中断
    }
}

即可完成接收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值