STM32F103单片机学习笔记(3):串口

控制/MCU

1878人已加入

描述

关于串口,基础的应该都知道,波特率,校验位,停止位,双向通信接收端连接发送端,发送端连接接收端,两个不同设备通信的时候要共地。485、232、422都是由串口驱动的,只是他们的传输电平不一样。经过了前面IO口的设置以及中断的配置之后,感觉再驱动中断普通的接收和发送就没有那么的吃力了,关于复杂的用法设置我这里就不总结了。这里要注意的是USART1应用的是APB2时钟,USART2、USART3、UART4、UART5应用的是APB1时钟。

单片机

继续看给我们的库函数,这一个涉及到的库函数是与串口相关的库函数stm32f10x_usart.c

单片机

单片机

对于串口,它在接收和发送的时候也可以设置为中断,这样就应用到我们之前的设置方法。这里我以设置串口为普通的发送,接收为外部中断,接收之后进行发送为例进行总结。下面是串口编写的流程图。

单片机

根据流程图一步步进行设置。

1、设置系统时钟

单片机

2、设置与串口相关的IO口

单片机

包括时钟,输入输出设置

3、对串口的初始化

单片机

这里没有重应设和复用的设置,设置好了就可以直接用了。

4、设置接收为接收中断

单片机

5、设置串口中断,并设置优先级

单片机

6、开启串口

单片机

7、编写中断服务函数

如果接受到了数据就将数据发送出去

单片机

8、关联中断服务与中断响应函数

在stm32f10x.h中添加函数void UART_TRxOver_Interrupt(void);在stm32f10x.c的串口中断入口中添加UART_TRxOver_Interrupt();

单片机

这样中断就可以用了。

9、发送数据

在主函数中可以调用函数来发送一个字节的数据,但是如果发送快了就会出现乱码,这是因为数据还没有发送完又要发送下一位,所以导致出现乱码,这么时候可以调用函数监测是否发送完成,如果发送完成则跳出函数。所以我对发送字节的函数进行了重新封装。

单片机

后面也可以封装成发送字符串的函数。

单片机

好了,今天就总结在这里了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分