关于串口,基础的应该都知道,波特率,校验位,停止位,双向通信接收端连接发送端,发送端连接接收端,两个不同设备通信的时候要共地。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、发送数据
在主函数中可以调用函数来发送一个字节的数据,但是如果发送快了就会出现乱码,这是因为数据还没有发送完又要发送下一位,所以导致出现乱码,这么时候可以调用函数监测是否发送完成,如果发送完成则跳出函数。所以我对发送字节的函数进行了重新封装。
后面也可以封装成发送字符串的函数。
好了,今天就总结在这里了。
设计资源 培训 开发板 精华推荐
- 适用于STM32L4P5ZGT6U MCU的STM32 Nucleo-144开发板,支持Arduino,ST Zio和morpho连接
- 【已验证】3.5mm音频切换器-4进1出
- 无线控制器
- AM2F-2412SH30Z 12V 2W DC-DC 转换器的典型应用
- 适用于 ADP7104 9V 低压差 (LDO) 线性稳压器的 ADP7104RDZ-REDYKIT、ADP7104RD-EVALZ SOIC RedyKit
- CL320、3 通道 20mA 线性 LED 驱动器的典型应用
- 适用于基于语音的应用的音频预处理系统参考设计
- 音频播放器
- 具有待机模式的 Ts4871 输出轨到轨 1W 音频功率放大器的典型应用
- 用于微功率 A/D 转换器的 LT1634BCMS8-1.25 电压基准的典型应用