stm32串口通信

1.串口的初始化

先开启串口的GPIO时钟,因为擦混口本身也是一个外设所以也需要打开串口的时钟

将TX(输出)设置为推挽输出模式

RX(输入)设置为浮空输入模式

接下来就是设置波特率 字长 停止位 校验  硬件流控制  模式

最后调用init函数,最后使用cmd函数开启串口

配置接收中断,先打开NVIC(因为stm32所有的中断都在NVIC中)

在NVIC中打开串口接收中断

再在串口中使能接收中断

完成对串口使用的GPIO的配置

A9是输出,A10是输入

下一步配置串口通信 

在初始化串口后,需要开启串口

在串口接收的时候会有一个串口接收中断,那么这个时候才可以接收数据

在初始化串口之后我们来实现,串口的发送,需要检测串口是否发送数据完毕,

串口发送数据寄存器,如果这个寄存器是空那么这个Flag就置1,就可以检测我们有没有发送数据完毕 ,不是空就为0.

1.发送字节 

 

2.发送字符串

将函数写入头文件中

在主函数中测试一下串口发送数据

实现串口接收----两种方式

1.中断方式

在串口接收之前,先进行配置中断,NVIC管理所有中断的

这个是抢占优先级(uint8_t NVIC_IRQChannelPreemptionPriority;),越小优先级越高,然后在比较子优先级(uint8_t NVIC_IRQChannelSubPriority;)

NVIC_PriorityGroupConfig();//这个是中断优先级分组

配置这个优先级的有个寄存器是有四位的,这四位存放的是主优先级,和子优先级,所有就需要去选择是选哪个分组的优先级

NVIC串口中断初始化

然后在开启串口之前直接调用这个函数初始化中断

NVIC_Config_UART()        //这个函数相当于先初始化总中断,然后打开串口接收中断

下一步写中断处理函数

中断处理函数都写在stm32f10x_it.c这个文件里面(it就iterrapter的缩写)

在这个文件里面写一个中断处理函数,串口的中断函数的名字是固定的,名字是不能随便去修改的,输错的话这个中断是不可以用的

temp存储数据,USART_GetITStatus函数用于获取中断的状态

接收到以后数据就立马返回这个数据

为了后续修改方面我们先定义一些宏,为代码的维护提供了便利

UART_DEBUG我们现在正在调试的串口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值