STM32F4_USART配置及细节描述

Ⅰ、概述

关于USART串口通信,可以说是MCU的标配。不管是在实际项目应用中,还是在开发过程中,它都起着很重要的作用。

在项目应用中我们常常使用UART串口进行通信,根据通信的距离及稳定性,还选择添加RS232、RS485等对UART数据进行转换。

 

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

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

 

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

 

Ⅱ、实例工程下载

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

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

 

提供下载的软件工程是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” 或者扫描下面二维码、关注,将有更多精彩内容等着你。

 

转载于:https://www.cnblogs.com/strongerHuang/p/5643498.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯面试:SaaS多租户,如何设计?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业网易、美团、字节、如阿里、滴滴、极兔、有赞、希音、百度、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 多租户设计&#xff0c;如何 技术选型&#xff…

Mac中Finder是什么?怎么打开?

很多人都知道windows系统中的资源管理器&#xff0c;不过不知道什么是finder。finder和资源管理器一样&#xff0c;都是用来管理文件&#xff0c;finder存在于mac统中&#xff0c;那么finder有什么作用呢?下面下班就为大家分享关于mac系统中finder的相关内容。   1、怎么打开…

phpstudy页面不存在_网站的404页面对于SEO的重要作用

随着网站建设的需求和要求越来越多&#xff0c;网站的新形式也逐渐成为人们改版的方向&#xff0c;但是在网站的改版中难免会出现一些小差错&#xff0c;导致网站的运行不顺畅&#xff0c;这很有可能就是网站建设中忘记设计404页面&#xff0c;那么4040页面能给网站带来哪些好处…

计算机系统基础:虚拟存储管理知识笔记

1、虚拟存储管理概念 一个计算机任务只需要部分装入主存便可以启动运行&#xff0c;其余部分留在磁盘上&#xff0c;在需要的时候装入主存&#xff0c;这样可以提高主存空间的利用率。这样该系统所具有的主存容量会比实际主存容量大很多&#xff0c;这样的存储器称为虚拟存储器…

git推送指令配置_git 常用命令

git 简介在实际开发中&#xff0c;会使用git作为版本控制工具来完成团队协作。因此&#xff0c;对基本的git操作指令进行总结是十分有必要的&#xff0c;本文对一些术语或者理论基础&#xff0c;不重新码字&#xff0c;可以参考廖雪峰老师的博文&#xff0c;本文只对命令做归纳…

传统的线性降维方法效果不佳。_机器学习西瓜书简明笔记(11)降维与度量学习...

上篇主要介绍了几种常用的聚类算法&#xff0c;首先从距离度量与性能评估出发&#xff0c;列举了常见的距离计算公式与聚类评价指标&#xff0c;接着分别讨论了K-Means、LVQ、高斯混合聚类、密度聚类以及层次聚类算法。K-Means与LVQ都试图以类簇中心作为原型指导聚类&#xff0…

计算机系统基础:设备管理知识笔记

1、设备管理介绍 设备管理主要包括设备分配、缓冲区管理、实际物理I/O设备操作、通过管理提高设备利用率和方便用户使用的目的。 设备属于计算机系统和外界交互的工具&#xff0c;不要负责计算机和外部的输入/输出工作&#xff0c;通常称为外设。 2、设备分类 2.1 按数据组织分…

灌篮高手微信登录是什么服务器,灌篮高手微信登录版本

这款《灌篮高手》手游游戏是由同名的火爆动漫改写而成的&#xff0c;里边的游戏角色都是有极致的复原和保存&#xff0c;足球运动员特点都是有一定的展现。也有经典的动漫故事情节和每个高等院校足球队的复原。现阶段为大伙儿出示的是灌篮高手微信登录版本&#xff0c;能够和小…

华为发布岳云鹏手机_刚刚,华为发布鸿蒙2.0!手机可用!

不凡的2020年激动人心的时刻终于到来今天下午3时华为开发者大会2020在正式开幕鸿蒙2.0发布&#xff01;本次大会包含主题演讲、技术论坛、松湖对话、Codelabs、Teach.Hour、互动体验等系列环节&#xff0c;大会将持续3天&#xff0c;众多活动也将于线上同步直播。技术论坛环节在…

Mac下安装jdk8

直接点击dmg文件 安装成功 在终端输入 Java -vesion 提供百度云链接方便大家下载 链接: https://pan.baidu.com/s/1n2SY-61KFb6-c1UcshZt1Q 链接: https://pan.baidu.com/s/1n2SY-61KFb6-c1UcshZt1Q 密码: g0mj

硬件基础:嵌入式物联网系统软硬件基础知识大全

本文主要介绍嵌入式系统的基础知识&#xff0c;涉及嵌入式软件和硬件的方方面面&#xff0c;希望对各位有帮助。嵌入式系统基础1、嵌入式系统的定义&#xff08;1&#xff09;定义&#xff1a;以应用为中心&#xff0c;以计算机技术为基础&#xff0c;软硬件可裁剪&#xff0c;…

ctrl z撤销后如何恢复_回收站清空后数据如何恢复?

回收站清空后数据如何恢复&#xff1f;怎么恢复回收站误删除文件&#xff1f;很多人为了电脑的更好运行以及其它的原因&#xff0c;都会定期清理一下桌面的回收站里的文件&#xff0c;有时候会一键清空&#xff0c;可能是想全部删除又或者是想特定删除一些而不小心全清理了&…

jh锂电保护电路_锂电池过充电、过放电、过流及短路保护电路原理及电路图

下图为一个典型的锂离子电池保护电路原理图。该保护回路由两个MOSFET(V1、V2)和一个控制IC(N1)外加一些阻容元件构成。控制IC负责监测 电池电压与回路电流&#xff0c;并控制两个MOSFET的栅极&#xff0c;MOSFET在电路中起开关作用&#xff0c;分别控制着充电回路与放电回路的导…

一个串口接2个设备_重庆市有2个大观镇,一个乡村旅游发达,一个特产柚子

同名的乡镇是很常见的现象&#xff0c;就连一个市里就有很多同名的乡镇&#xff0c;在之前的文章里说过&#xff0c;重庆市有2个临江镇、2个义和镇等。今天继续看看&#xff0c;重庆市内两个同名乡镇——大观镇&#xff0c;一个属于南川区&#xff0c;一个属于梁平区&#xff0…

计算机系统基础:设备管理采用的相关技术知识笔记

1、通道技术 设备管理的通道技术是为了数据传输可以独立于CPU&#xff0c;让CPU从繁琐的I/O工作中解脱出来。设置通道后&#xff0c;CPU、只需要向通道发I/O指令,通道接收到指令后&#xff0c;从主存中取出本次要执行的通道程序并执行&#xff0c;只有完成了I/O任何后才会向CPU…

treelist自动定位行_国内首创!金川集团千米深井双定位补偿摇台投用

新甘肃客户端金昌讯(新甘肃甘肃日报记者谢晓玲)近日&#xff0c;金川集团二矿区18行副井提升系统罐笼自动化改造项目顺利完成并投入使用。项目研发的双定位补偿摇台是国内同行业首创&#xff0c;可以实现罐笼在井筒内水平和竖直方向的同步定位&#xff0c;从根本上解决了传统摇…

计算机系统基础:磁盘调度知识笔记

1、磁盘调度介绍 磁盘可以被多个进程共享的设备&#xff0c;如果有多个进程请求访问磁盘时&#xff0c;为了保证信息的安全&#xff0c;系统的每一时刻只允许一个进程进入磁盘进行I/O操作&#xff0c;别的进程需要等待。 磁盘需要采用一种适当的算法&#xff0c;使每个进程对磁…

freemarker 去掉最后一个逗号_从零开始做一个SLG游戏(六)游戏系统以及配置表...

本文主要是来梳理下游戏内的基本系统(虽然只是照搬polytopia的&#xff0c;但是还是要总结一下)&#xff0c;并预先做一些配置表&#xff0c;并实现读取。一、经济系统1.总述经济系统可以是整个游戏的核心。在本游戏中只有一种资源&#xff1a;金币。每个回合都会获得一定数量的…