stm32串口通信流程

初始化

1.计算波特率,公式 = (pclk2 * 1000000) / (bound * 16);
pclk2为APB2外设时钟,bound为波特率如9600(注意有4位小数部分)

2.使能串口所在的PORT时钟与串口时钟,PORT用来接收发送数据,串口用来处理,相当于一个是门,一个是内部的接收。(RCC->APB2ENR)

3.将串口对应的IO口初始化为相应的输入模式(手册P.110)。(GPIO)

4.复位串口RCC->APB2RSTR

5.将波特率的值(包括4位小数的16位)存入USART->BRR寄存器

6.USART1->CR1设置收发数据的格式,并打开UE
//如果是发送数据可以省略中断,但建议加上,可以在接收数据中断函数判断SR第5位(看看此次是否是接收数据)
在这里插入图片描述

7.设置中断USART1->CR1 |= 1 << 5;接收缓冲区非空中断使能

8,设置串口中断优先级MY_NVIC_Init(3,3,USART1_IRQn,2);


接收中断函数

注:读取DR会自动清除中断标志 USART1->SR第5位置1为标志
在这里插入图片描述
判断如果标志USART1->SR 1 << 5;
读取USART->DR
(可以设置接收协议)


发送函数

while(USART1->SR & 0x40)判断TC是否发送完成
USART1->DR = (u8)ch;

(注:以上为一次数据的收发)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值