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我们现在正在调试的串口