推荐

分享一个朋友的人工智能教程,零基础!通俗易懂!希望你也加入到人工智能的队伍中来!

http://www.captainbed.net/strongerhuang

Ⅰ、写在前面

学习本文之前可以查看我前面的文章:

STM32CubeMX介绍、下载与安装

STM32CubeMX使用方法及功能介绍

STM32CubeMX新建工程+基本IO配置过程

本文接着前面STM32CubeMX文章结合USART实例,讲述关于STM32CubeMX新建USART工程,以及新建好完成的软件工程。最终通过STM32CubeMX工具配置完成实现USART串口通信的软件工程。

本文使用Keil(MDK-ARM) V5软件为编译环境,如果你没有安装最新版本的软件,请安装Keil(MDK-ARM) V5版本的软件,具体过程可以参考我的一篇文章:

MDK-ARM下载与安装

关于本文的更多详情请往下看。

Ⅱ、STM32CubeMX新建USART工程

在上一篇文章简单讲述了基于IO新建一个工程的步骤,本文基于USART简单讲述一下STM32CubeMX新建UART串口发送工程。

(我们还是以STM32F103E为例来讲述,如果你的板子是STM32其他型号芯片,在选择芯片时对应即可)

1.新建工程基本步骤

STM32CubeMX新建工程前面的基本步骤大致如下几步(具体请看我上一篇文章):

1.打开STM32CubeMX软件,点击“新建工程”

2.选择MCU 或 选择(ST官方)开发板

3.工程配置

2.Pinout配置

这里我们配置IO(定义PF11引脚为LED)、RCC(使用HSE)、USART(串口)。

A.配置PF11引脚为输出模式

第一步:放大芯片图标,找到PF11(可以通过Find查找)

第二步:配置为输出选中PF11 -> 左键 -> 弹出列表 -> 选中“GPIO_Output”

B.配置RCC

PCC配置有三项,我们这里只配置HSE高速外部时钟,其他两项LSE外部低速时钟MCO时钟输出默认配置。

选择HSE高速外部时钟为“Crystal”,对应的引脚自动改变,如下图:

C.配置USART(串口)

USART的配置有好几种,本文就以最基础,也是最常见的一种”UART异步串行通信”配置来讲述。

选择USART1模式为“asynchronous”对应的引脚自动转换为USART。

3.Clock配置

对于系统时钟应该都知道它的作用,就是驱动整个芯片工作的心脏,如果没有了它,就等于人没有了心跳。时钟的快慢也就决定了程序的快慢。

STM32的时钟树功能比较强大,分频、倍频可以根据你的需求配置出多种时钟。STM32CubeMX这个工具在这一块也是做的比较人性化的,可以直观的看见具体配置,而且有错误提示(注意:不同型号芯片的时钟树可能不同,但大同小异),我们配置为HSE,如下图:

4.“综合”配置

这里的配置相当于初始化一些配置,集齐了前面的引脚对应的初始化配置,所以叫“综合配置”。

由于我们主要配置了IO 和 USART, 所以在这个选项里面,重点关心的就是这两项。

A.IOPF11)配置

B.USART配置

5.最后生成代码、编译下载

这些步骤不是今天的重点,详细过程可以参看上一篇文章。

生成的原始代码“STM32CubeMX_USART配置(原始版)”可到我360云盘下载:

https://yunpan.cn/cMPy7AbArtxQ8  访问密码 e92f

6.添加代码

在main.c文件中添加“延时函数”:

void TestDelay(uint32_t cnt)

{

while(cnt--);

}

在主函数中添加下图代码:

添加以上代码就能实现:间隔(约0.5S)LED亮灭变化一次,且串口打印数据。

STM32CubeMX_USART配置(修改版),提供给大家下载地址(360云盘):

https://yunpan.cn/cMPKPHVbJtNCB  访问密码 415b

Ⅲ、软件工程说明

接下来讲述一下使用STM32CubeMX新建的软件工程(MDK-ARM版本)。

1.目录结构

在MDK-ARM工程中,可以看到四个目录,分别是:

HAL:这个库类似于标准外设库(在Drivers目录下)

启动文件startup_stm32f103xe.s:这个文件也和标准外设库里面文件startup_stm32f10x_hd.s类似。

User用户应用:这个目录下是用户添加源代码文件的目录,如果要添加新文件可以在这里添加。

CMSIS微控制器软件接口标准:这个目录也是属于底层的代码(和我之前使用标准外设库建立的软件工程类似,也是位于Drivers目录下)。

2.添加用户代码区域

打开使用STM32CubeMX新建的软件工程可以看见很多地方有成对的注释代码“USER CODE BEGIN”和“USER CODE END”,这两个注释之间就是用户添加自己代码的区域。如main.c文件下就有多处用户编程区域:

3.初始化配置代码描述

当我们使用STM32CubeMX新建软件工程后,打开软件可以看见里面有很多代码就是通过STM32CubeMX工具自动生成的(是STM32CubeMX的特性),下面大概讲述一下本文生成的代码。

A.四个主初始化代码:

HAL_Init();              HAL库底层初始化

SystemClock_Config();     时钟配置

MX_GPIO_Init();          IO初始化(用户需求)

MX_USART1_UART_Init(); USART初始化(用户需求)

这四个主初始化配置代码中,前面两个基本上是使用STM32CubeMX工具生成都有的代码,后面两个才是用户根据自己需求配置的代码。

B. HAL_Init();

这个属于软件工程的标配,主要对初始化(默认)FLASH和NVIC等。

这个函数会使程序不能访问FLASH,也就是为什么我们程序在运行的时候不能下载代码的原因,解决的办法:1.不调用该函数; 2.使MCU处于复位状态下载代码。

C. SystemClock_Config();

当你使用以前准外设库开发过STM32,知道时钟初始化代码,那么这个函数应该很熟悉。其实这里的配置就是上面说的RCC配置(时钟树),参数就是时钟树对应的值。看时钟树就很容易理解。

位于main.c文件。

D. MX_GPIO_Init();

这个函数是我们配置的IO函数(对PF11引脚初始化,很简单),位于main.c文件。

和以前使用标准外设库开发类似,其中的参数就是上面“综合配置” 里设置的。

E. MX_USART1_UART_Init();

这个函数是我们配置的USART,位于main.c文件。

和以前使用标准外设库开发类似,其中的参数就是上面“综合配置” 里设置的,波特率、数据位数、停止位等。

、说明

以上简单讲述了使用STM32CubeMX生成的软件工程,后续会定期更新使用STM32CubeMX新建各种外设资源工程的文章,敬请等待。

如果是STM32初学者的话,不建议立刻使用这个工具来开发,建议先学习标准外设库开发,因为这个工具生产的代码(HAL库)相比以前标准外设库理解起来相对困难一点。

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

Ⅴ、最后

更多精彩文章我将第一时间在微信公众号里面分享,对本文有什么疑问可微信留言。

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

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

STM32CubeMX软件工程描述_USART配置过程相关推荐

  1. Centos7安装Apache和PHP,包含配置过程

    本文主要讲的是本人在迁移php网站相关软件的安装和配置过程,以及一下问题的解决步骤.通过阅读本文能够知道如何迁移php网站,如何配置httpd服务使得它能够解析php文件以及如何解决迁移过程中的异常问 ...

  2. Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门

    这些年免费帮同学或同学的朋友做过的毕设还是有一些了,我的博客基本都是基于我做过的项目相关的,而里面又有三分之一都是自己做的毕设或别人的毕设的做后感.毕设其中就包括MFC图像处理..Net安全软件.C# ...

  3. linux内核的配置过程,linux内核的配置机制及其编译过程

    linux内核的配置机制及其编译过程. 一.配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: 1.Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linu ...

  4. 经典的自动修复工具GenProg配置过程

    前言 对于软件工程自动修复方向的人来说,GenProg是一个跳不过的软件.GenProg的作者在2009年,2012年,2013年发了三篇A会,都是有关GenProg的(我没记错的话). 这里给出软件 ...

  5. 交换机配置过程中大多数单词

    一.交换机配置过程中大多数单词 port //端口 switchport //交换机端口 configure //使形成 config //配置 enable //给予权利 terminal //终端 ...

  6. 记录个人Wiki搭建配置过程

    搭建docsify个人Wiki过程 本文介绍以docsify为基础搭建wiki,文件数据存放到github,本文详细说明了配置过程 打开cmd,检查本地node是否安装,没有安装需前往Node官网安装 ...

  7. Maven配置过程中出现:“‘dependencies.dependency.systemPath‘ for junit:junit:jar must be omitted...”的错误

    项目场景: 在maven的配置过程中,发现在尝试下载依赖的时候,出现了些许bug. 问题描述 采用的是直接手动导入的方法.配置好阿里云镜像仓库后(该步没有出现问题),先把junit依赖下载放到&quo ...

  8. 【LM401】USART串口配置过程 uart.c 代码解析

    [LM401]USART串口配置过程 1. 板载资源说明 2.uart.c 串口配置文件修改 2.1接口文件 uart_if.c 2.2整体配置流程 2.2.1初始化串口,分配DMA 2.2.2配置串 ...

  9. nagios配置过程详解

    一.nagios配置过程详解 1.nagios默认配置文件介绍  nagios安装完毕后,默认的配置文件在/usr/local/nagios/etc目录下,每个文件或目录含义如下表所示: 2.配置文件 ...

最新文章

  1. 20150726 填坑日记
  2. 研究生第一篇科研论文常犯问题总结
  3. spring security 注解不生效的一些隐含问题
  4. Refuses to install for WTP10
  5. 伪元素的margin值挤压主体元素解决
  6. juniper防火墙(SSG and SRX)排障抓包命令
  7. 编译opencv文件
  8. (计算机组成原理)第五章中央处理器-第二节:指令执行过程(取指周期、间址周期、执行周期和中断周期)
  9. 京东开通数字人民币“硬件钱包”线上消费功能
  10. Android实战经验之图像处理及特效处理的集锦
  11. pytorch-----使用Module类来自定义模型
  12. 在windows的IDE中使用linux命令行
  13. 【Android】Android--Dialog
  14. 刚接手的项目代码 怎么看_你们刚开始是怎么看英文文献的?
  15. 排列组合公式,用向量叉乘的办法计算平行四边形面积
  16. Spring Cloud之路---1.注册中心eureka与服务提供者
  17. python小练习(杂七杂八)
  18. Java –显示所有ZoneId及其UTC偏移量
  19. 安卓8.1系统SDK去掉系统设置中的自动调节亮度
  20. Python之斐波那契

热门文章

  1. 日常总结——域环境管理
  2. Meerkat倒下想到的:社交巨头的后院不容置喙
  3. Android源码和内核源码的下载,编译和执行
  4. 深入浅出Java核心技术开篇(总结)
  5. 【Matplotlib】 标注一些点
  6. [2-sat][topsort输出解] POJ 3648 Wedding
  7. modprobe命令使用方法
  8. SQL Server中以独占的方式操作表
  9. python循环体执行的次数与其他不同的是_【单选题】下面Python循环体执行的次数与其他不同的是( )...
  10. Web前端——JavaScript(dom文档对象模型)