STM32F407串口2配置

本文详细介绍了如何配置STM32F407VET6的串口2,包括时钟和GPIO使能、引脚复用、波特率设置等步骤,并提供了中断处理函数,用于接收和处理数据。特别强调了printf函数不能在串口2的收发函数中使用,以免干扰串口1。代码示例包含usart2.c、usart2.h和main.c的部分内容。
摘要由CSDN通过智能技术生成

第一次写博客,以前一直忽视,记录做开发中遇到的问题,决定不再懒了,本文主要是配置STM32F407VET6的串口2,对应PA2,PA3。大家都知道正点原子配置了串口1,之前一直想配置串口3,可惜一直没成功,尝试了串口2,4,5,6的配置,都没有问题,就3不行,我怀疑我的板子有问题,不过先把已解决的问题记录下来,以后解决了,再写。特别注意:printf函数已经在库函数中和usart1配置好了,现在是使用usart2,所以printf不可以在串口2的收发函数里出现,不然串口1会对串口2产生干扰。

目前主要是用库函数,偶尔使用寄存器,还是太懒了,实在是看不进去寄存器手册,言归正传,配置串口的步骤,原子大神已经描述的相当清楚了.

包括以下步骤: 1.配置串口时钟和和GPIO时钟使能。

2.设置引脚复用器映射。

3.GPIO端口模式设置

4.串口参数初始化:设置波特率,字长,奇偶校验等参数

5.初始化NVIC.

6.开启中断

7.使能串口 

中断配置: 当接收到从电脑发过来的数据,把接收到的数据保存在 USART2_RX_BUF 中,同时在接收状态寄存器(USART2_RX_STA)中计数接收到的有效数据 个数,当 收到回车(回车的表示由 2个字节组成:0X0D 和 0X0A)的第一个字节 0X0D 时,计数器将不再增加,等待 0X0A 的到来,而如果 0X0A 没有来到, 则认为这次接收失败,重新开始下一次接收。如果顺利接收到 0X0A,则标记 USART_RX_STA 的第 15 位,这样完成一次接收,并等待该位被其他程序清 除,从而开始下一次的接收,而如果迟迟没有收到0X0D,那么在接收数据超过USART_REC_LEN的时候,则会丢弃前面的数据,重新接收。

usart2.c   usart2.h   main.c代码如下:

//---------usart2.c文件-----------------------------------------------------------------------------------------------------------------------------------//

//初始化IO 串口2   

#include "delay.h"
#include "usart3.h"
#include "stdarg.h"  
#include "stdio.h"  
#include "string.h"  
//串口发送缓存区
__align(8) u8 USART2_TX_BUF[USART2_MAX_SEND_LEN]; //发送缓冲,最大USART2_MAX_SEND_LEN字节
#ifdef USART2_RX_EN   //如果使能了接收    
//串口接收缓存

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值