STM32F4_USART配置及细节描述

Ⅰ、概述微信

关于USART串口通讯,能够说是MCU的标配。无论是在实际项目应用中,仍是在开发过程当中,它都起着很重要的做用。函数

在项目应用中咱们经常使用UART串口进行通讯,根据通讯的距离及稳定性,还选择添加RS23二、RS485等对UART数据进行转换。学习

 

在开发过程当中,咱们经常用它来打印调试信息,咱们购买的开发板基本上都有一个UART通讯接口(DB9的接头),这个接口主要的一个做用就是用来开发时调试使用。测试

本文主要针对STM32初学者,使用STM32F4标准外设库、Keil集成IDE,对STM32F4的USART进行配置及描述。1.详细描述使用自定义打印数据、自定义中断接收数据;2.重定义打印数据printfspa

 

关于本文的更多详情请往下看(微信请点击“阅读原文”查看更多连接内容)。设计

 

Ⅱ、实例工程下载3d

笔者针对于初学者提供的例程都是去掉了许多没必要要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供你们学习。调试

笔者提供的实例工程都是在板子上通过屡次测试并无问题才上传至360云盘,欢迎下载测试、参照学习。blog

 

提供下载的软件工程是STM32F417的,但F4其余型号也适用(在工程中修改一下型号就行)。接口

 

360云盘下载地址:

https://yunpan.cn/cBQiZXDsvacwV  访问密码 a98e

 

STM32F4资料:

https://yunpan.cn/cR2pxqF5x2d9c  访问密码 53e7

 

Ⅲ、USART初始化描述

笔者以F4标准外设库(同时也建议初学者使用官方的标准外设库)为例来描述一下USART的初始化。

USART的初始化大体分三个部分:

 

1.USART时钟

该函数位于bsp.c文件下面;

 

重点注意:

A.USART时钟的配置要在USART其余配置(USART初始化、中断等)前面;

 

B.匹配对应时钟。

好比:RCC_APB2外设不要配置在RCC_APB1时钟里面

【如:RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);这样能编译经过,但这是错误的代码】

 

2.USART引脚配置

该函数位于usart.c文件下面;

 

注意:

A.GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);

  GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);

引脚配置中,引脚功能复用的配置比较重要,不少从F1转型到F4的朋友每每会忽略掉这一点(F1中没有这个配置选项)。

 

B.GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

这里配置为复用模式。

 

3.USART参数配置

该函数位于usart.c文件下面;

 

A.USART波特率:

对于STM32来讲,波特率可根据用户自定义,也就是数值随便用户设定(但须要主要范围和偏差值)。

关键的一点:它不受系统使用的变化而受影响(这就是使用标准外设库的好处),也就是说它自适应系统时钟。

 

B.USART模式:

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

提供实例是收发模式都有,但提醒一下,有些朋友从一个地方拷贝代码本身的工程就要注意,若是你使用了接收的功能,拷贝过来的代码没有配置接收,那就有问题。【在实际开发中有人碰见过这类问题】

 

C.中断配置

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

中断功能也是在应用中比较经常使用的一个功能,特别是接收中断。若是使用的USART中断,这个函数就须要配置,发送中断不常见,若是没有发送中断的要求就不须要配置发送功能。

 

Ⅳ、USART重定义(打印数据)

相信来学习该文章知识的朋友(都应该学习过C语言知识)都应该知道打印数据printf这个函数。可是,不少初学者可能不理解怎样才能实现printf这种打印方式,其实只须要简单的两步步骤就能实现printf这个函数。这一节就是关于描述使用USART来重定义打印数据。

 

1.使用微库

project -> Options for Target -> Target窗口下勾选上”Use MircoLIB”使用微库。

因为printf函数是标准的函数,这里咱们就直接使用标准的“微库”,而不本身设计该函数的功能。

 

2.重定义函数

#include <stdio.h>

首先要包含头文件”stdio.h”, 提供的实例工程位于usart.h文件下面。

该函数位于usart.c文件下面;

 

咱们使用printf函数,须要重定义fputc函数。

 

通过上面两步骤,咱们就能够实现printf函数打印输出UART数据了。

 

Ⅴ、USART自定义(打印数据)

该函数位于usart.c文件下面;

 

咱们自定义的打印函数功能就比较简单,计算字符串个数。

 

Ⅵ、USART中断接收

接收数据能够查询接收,也能够中断接收;查询的效率比较低,咱们实例提供的是中断接收的方式,实现的效果的接收到一个数据,就将其发送出去。

 

中断接收须要配置几个地方:

1.使能中断

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

这个函数位于USART初始化里面,主要是使能USART中断。

 

2.配置NVIC

该函数位于bsp.c文件下面;

配置NVIC通道和优先级。

 

3.USART接收中断

该函数位于stm32f4xx_it.c文件下面;

主要是中断接收和处理,效果就是:有中断就发送接收的数据。

 

 

Ⅶ、说明

关于笔者提供的软件工程实例,可关注微信,在会话框回复“关于工程”,有关于工程结构描述、型号修改等讲述。

 

以上总结仅供参考,如有不对之处,敬请谅解。

 

Ⅷ、最后

更多精彩文章我讲第一时间在微信公众号里面分享。

本着免费分享的原则,方便你们手机学习知识,按期在微信平台分享技术知识。若是你以为分享的内容对你有用,又想了解更多相关的文章,请用微信搜索“EmbeddDeveloper” 或者扫描下面二维码、关注,将有更多精彩内容等着你。

 

相关文章
相关标签/搜索