基于STM32F407VET6自学笔记

ArtPig自学stm32

第一章 基于STM32VET6的编程环境

1.keil软件安装

选择版本:Keil5 MDK版,官网地址:https://www.keil.com/download/

安装教程不多赘述,安装路径选择非系统盘加英文文件夹

软件的激活,直接上网搜索(搜索关键字“Keil5 MDK的激活”),添加许可证前,一定要以管理员身份运行

2.芯片包的导入Keil

方法一:软件导入(科学上网,网速快)

点图片上红框里绿色的按钮

在这里插入图片描述

由于我之前已经安装过了,以我的芯片型号举例,在search那搜索STM32F407,然后点击install安装

在这里插入图片描述

方法二:离线导入

注意:我只是拿我的芯片举例,其他芯片自行搜索

官网下载:https://www.keil.arm.com/packs/stm32f4xx_dfp-keil/versions/

芯片包下载完后,到Keil里导入,点击File,再点击Import From Folder 找到存放此前下载的芯片包文件夹

在这里插入图片描述

3.基于固件库学习STM32

芯片固件库下载

官网下载:

以STMF407VET6举例,其为F4型号,则点F4

在这里插入图片描述

网页下拉,点击download下载

在这里插入图片描述

STM32官方标准固件介绍

参考文章:https://shequ.stmicroelectronics.cn/thread-635243-1-1.html

芯片固件库文件解压后:

在这里插入图片描述

Libraries 文件夹下面有CMSIS和 STM32F4xx_StdPeriph_Driver 两个目录,这两个目录包含固件库核心的所有子文件夹和文件

在这里插入图片描述

CMSIS文件夹存放的是符合CMSIS规范的一些文件。包括STM32F4核内外设访问层代码,DSP 软件库,RTOS API,以及 STM32F4 片上外设访问层代码等。我们后面新建工程的时候会从这个文件夹复制一些文件到我们工程。

在这里插入图片描述

STM32F4xx_StdPeriph_Driver 放的是 STM32F4 标准外设固件库源码文件和对应的头文件。inc 目录存放的是 stm32f4xx_ppp.h 头文件,无需改动。src 目录下面放的是 stm32f4xx_ppp.c 格式的固件库源码文件。每一个.c 文件和一个相应的.h 文件对应。这里的文件也是固件库外设的关键文件,每个外设对应一组文件。

在这里插入图片描述

Libraries 文件夹里面的文件在我们建立工程的时候都会使用到。

Project 文件夹下面有两个文件夹。顾名思义,STM32F4xx_StdPeriph_Examples 文件夹下面存放的的 ST 官方提供的固件实例源码,在以后的开发过程中,可以参考修改这个官方提供的实例来快速驱动自己的外设,很多开发板的实例都参考了官方提供的例程源码,这些源码对以后的学习非常重要。STM32F4xx_StdPeriph_Template 文件夹下面存放的是工程模板。

[外链图片转存中…(img-5db1178187f24d869920a8b514bc4056.png)

4.Keil工程模板创建

打开STM32固件标准库 点击project

(如何下载STM32固件标准库,具体请点击目录—— “3.基于寄存器学习stm32” )

均以STM32F40XX官方固件库为例
均以STM32F40XX官方固件库为例

点击这个模板STM32F4xx_StdPeriph_Templates

在这里插入图片描述
点击MDK-ARM
在这里插入图片描述
之后你能看到这个绿色的Keil project 工程文件
在这里插入图片描述
这便是STM官方替你写好的工程模板

打开工程模板是这样子的界面

在这里插入图片描述

打开main程序,找到main主函数里的while{},便可以开始写工程了

在这里插入图片描述

5.自己创建工程模板

个人更推荐B站stm32 大佬 “江协科技”的方法,自己创建一个工程模板

大佬B站首页网址:[添加链接描述](https://space.bilibili.com/383400717?spm_id_from=333.337.0.0)

第二章keil 创建新工程

关于keil安装包与stm32固件包的下载可以看我写的笔记第一章
https://blog.csdn.net/2302_76783933/article/details/137752785?spm=1001.2014.3001.5502

为了创建基于STM32F407的keil新建工程,我前期遇到不少问题就此分享

问题1.固件库缺少源文件

按照B站大佬“江协科技”新建keil文件的教程所遇到的问题

B站大佬教程视频截图

在这里插入图片描述

再看看我们下载的官方固件库(以STM32Fxxx为例)

根本就没有后缀名为 .mds文件

在这里插入图片描述

文件夹路径:STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm

虽然有core_cm4.h文件,但却没有core_cm4.c文件

在这里插入图片描述

文件名路径:D:\Stugying of stm32\stm32f40xxx标准库最新版\en.stsw-stm32065_v1-9-0\STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Include

问题2.官方keil工程模板过于复杂

stm32官方所提供的keil工程模板过于复杂不利于新手

官方模板截图,有众多的文件占用内存,前期学习根本用不到那么多函数,即使成功生成.hex文件,但警告特别多,新手难以看得懂

在这里插入图片描述

最为推荐的方法

我找了一下午终于找到一个非常好的教程

教程链接

不过我在跟着大佬教程时有遇到一些问题,就是我的stm32f4xx.h文件内容与大佬的内容不同

在这里插入图片描述

不过也没关系,直接将STM32F40_41xxx,USE_STDPERIPH_DRIVER拷贝过去就好了

在这里插入图片描述

在补充一下大佬没讲的,记得将这里的魔法棒里的Target里的Arm Compiler 改成 5 vision 或者 5.06版本

在这里插入图片描述

最后点一下编译,0错误、0警告

注意main.c文件里的程序最后要空一行

在这里插入图片描述

问题3.下载的keil里的 Arm Compiler 只有 6 vision

下载地址:https://developer.arm.com/downloads/view/ACOMP5

安装教程:点击三个方块,再点击Foder,再点击Arm Compiler那栏的三个点

在这里插入图片描述

点击Add another Arm Compiler ,然后找到刚刚下载好的Arm Compiler文件导进去

在这里插入图片描述

第三章 正式操作STN32F07系列芯片

注意:以下均以STM32F407VET6为例

一、点亮LED灯

复制粘贴我们的新建工程模板

跳转到的地方

我这边找到一个作者开源的STM32F407VET6文件

Github文件下载网址

点击绿色的Code

在这里插入图片描述

点击download zip

在这里插入图片描述

打开下载好的文件

在这里插入图片描述

打开program
在这里插入图片描述

复制1-新建工程模板

在这里插入图片描述

创建新文件夹led_test

在这里插入图片描述

粘贴新建工程模板到文件夹led_test

1.GPIO

STM32F407VET6下载

github文件下载教程

中文手册跳转至175

在这里插入图片描述

在上图我们可以知道GPIO其实就是每个I/O端口

相信学过51单片机的朋友应该很了解I/O端口

我们再来看看这个芯片的原理图

在这里插入图片描述
我们可以看到我们芯片上写的都是PA0、PB0…PE0之类的,那么我们的GPIO口在哪?

在这里插入图片描述
在这里插入图片描述
可以看到PE口就是GPIOE,PA口就是GPIOA,以此类推

如果还不够理解,现在打开我们刚刚的工程文件led_test

打开keil文件选择打开文件stm32f4xx_gpio.c

在这里插入图片描述
我们可以看到绿色的注释,

GPIOx peripheral 指GPIOx 外设,而PX(PE、PA之类的)就是外设

GPIOx: where x can be (A…K) 指GPIOx,末尾的“x”可以替换为A、B、C…E,就是PA、PB、PC…PE

LED灯是不是芯片的外设,那我们要点亮它,就得用到我们的外设,就得用到GPIO口

这是我板子的LED灯模块

在这里插入图片描述
可以看到我们的LED电路是PE口,那么我们的GPIOx就得是GPIOE;

可以看到我们的PE口是下拉电阻,并且是低电平点亮LED灯;

我建议创建一个led.c文件和led.h文件来编写我们的点灯程序,之后直接在main主函数使用;

led.h文件

在这里插入图片描述

led.c文件
在这里插入图片描述

对于这段代码GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;

ChatGpt 3.5的回答:

GPIO Output type enumeration 可能是指用于描述 GPIO(通用输入输出)引脚输出类型的枚举类型。在嵌入式系统或单片机开发中,GPIO引脚通常可以配置为输出模式,以便控制外部设备的状态。输出类型枚举可能包括:

  1. Push-Pull(推挽):在输出高电平时输出电压为高电平,输出低电平时输出电压为低电平。这种输出类型具有较快的切换速度和较低的功耗。

  2. Open-Drain(开漏):在输出高电平时,GPIO引脚处于高阻态,输出电压由外部上拉电阻决定;在输出低电平时,GPIO引脚连接到地,输出电压为低电平。这种输出类型通常用于需要级联多个设备的情况,例如总线通信。

  3. Open-Source(开源):与开漏类似,但是在输出低电平时,GPIO引脚连接到VCC,输出电压由外部下拉电阻决定。这种类型的输出在一些特定的电路设计中可能会有用。

  4. PWM(脉冲宽度调制):用于产生脉冲宽度调制信号,常用于控制电机速度、调节亮度等应用中。

具体的枚举类型可能会根据硬件平台或开发框架的不同而有所不同,你可能需要查阅相关文档或资料来了解特定平台或框架中的 GPIO 输出类型枚举。

如何查看那些官方帮我们写好的代码

在这里插入图片描述
将光标移动到这里,点击鼠标左键在这里插入图片描述
点击GO To Definition Of ‘GPIO_Init’

这时我们就能看到函数的功能,以及如何使用

在这里插入图片描述

模块化编程

将创建好的led.h头文件在主函数里使用,即模块化编程

优点是避免了主程序因编写过多的代码而冗长,并且可以随时调用;

在这里插入图片描述

教大家怎么看keil工程文件

源代码呀,头文件呀

使能,初始化,在同一个寄存器可以使用与或

2.RCC时钟

为什么要初始化时钟?

在这里插入图片描述

ChatGpt 3.5的回答:

在使用STM32(STMicroelectronics出品的一系列32位ARM Cortex-M微控制器)时,需要初始化RCC(Reset
and Clock
Control)时钟,是因为时钟是微控制器运行的基础。RCC模块负责控制微控制器的时钟源以及时钟分频,确保微控制器能够以正确的时钟频率运行。

具体来说,RCC模块可以执行以下功能:

  1. 时钟源选择:RCC允许你选择外部晶振、内部时钟源(比如内部RC振荡器)或者外部时钟源作为微控制器的主时钟源。

  2. 时钟分频:RCC还允许你设置主时钟频率的分频比例,以便得到你需要的特定时钟频率。

  3. 时钟使能:RCC负责使能或者关闭各种外设和总线的时钟,以便控制这些外设和总线的工作状态。

因此,在使用STM32时,初始化RCC时钟是非常重要的一步。如果未正确初始化RCC时钟,可能导致微控制器无法正常工作,外设不能正确访问,甚至可能导致系统不稳定或者崩溃。

3.烧录

如何根据电路原理图来判断烧录方法?

ChatGpt 3.5的回答:

Fly MCU的使用方法

以及如何根据原理图来判断板子的烧录方式

这个很重要

ST-Link 啊,J-Link啊

我所遇到的错误五

至于Stm32F07,我先发一下

不要拘泥,不要被局限

转化思路

买个F103开始学江科大

### 回答1: 要在Keil5中安装STM32F407芯片包,可以按照以下步骤进行操作: 1. 首先,从ST官网下载最新版本的STM32CubeMX软件,并安装到电脑上。 2. 打开STM32CubeMX软件,选择“New Project”创建一个新项目。 3. 在“Part Number”中输入“STM32F407VG”,选择正确的芯片型号。 4. 在“Pinout & Configuration”中配置芯片的引脚和外设,生成代码并保存。 5. 打开Keil5软件,选择“Project”->“New uVision Project”,创建一个新的工程。 6. 在“Device”中选择“STMicroelectronics”->“STM32F4 Series”->“STM32F407VG”,选择正确的芯片型号。 7. 在“Project”->“Options for Target”中,选择“C/C++”选项卡,将“Include Paths”添加STM32CubeMX生成的代码路径。 8. 在“Project”->“Options for Target”中,选择“Debug”选项卡,选择正确的调试器和端口。 9. 在Keil5中编写代码,编译、下载、调试即可。 希望以上步骤能够帮助您成功安装STM32F407芯片包。 ### 回答2: Keil5是一款广泛应用于嵌入式系统开发的综合性IDE,而STM32F407芯片则是一种高性能ARM Cortex-M4 32位处理器,为了在Keil5中能够成功使用STM32F407芯片进行开发,我们需要安装相应的芯片包。 首先,我们需要前往Keil官网下载芯片支持软件Pack Installer。下载完成后,运行软件并搜索“STM32F4”。可以看到Keil官方提供了多个版本的芯片包,我们可以根据自己的需求选择合适的版本进行安装。建议选择最新的版本进行安装,因为旧版本可能会存在一些已知的Bug。 选定好版本后,点击“Install”按钮,等待芯片包的下载和安装过程完成。这个过程可能需要一些时间,具体时间取决于网络速度和安装的芯片包大小。在这个过程中,我们可以先浏览一下芯片包所提供的内容,以及支持的芯片型号等信息。 安装完成后,我们需要在Keil5中进行一些配置工作,以便能够使用我们刚刚安装的芯片包进行开发。进入Project->Options for Target菜单,在“Device”中选择我们要使用的芯片型号,比如STM32F407VG。然后,在“C/C++”选项卡中,选择“Include Paths”,并添加芯片包路径。路径一般为“C:\Keil_v5\ARM\Pack\ARM\CMSIS\4.5.0\CMSIS\Include”,具体路径根据你的安装目录有所不同。 完成以上配置后,我们就可以在Keil5中开始使用STM32F407芯片开发程序了。期间可能会遇到些问题和挑战,但只要不断学习和尝试,相信一定能够克服任何困难,高效地完成嵌入式开发任务。 ### 回答3: Keil是一种广泛使用的嵌入式编译器,而STM32F407芯片则是一款高性能ARM Cortex-M4微控制器,它们的结合可以提供快速、高效和灵活的嵌入式软件开发。 要在Keil中安装STM32F407芯片包,首先需要确保已安装了最新版的Keil软件,可以从Keil的官方网站上下载并安装。 然后,我们需要下载并安装STM32F407芯片包,这个芯片包可以从STMicroelectronics官方网站上下载。下载好芯片包后,解压缩并将其复制到Keil的安装目录下的"ARM"文件夹中。接下来,我们需要在Keil软件中添加STM32F407芯片的支持。 在Keil的主界面上,点击"Project"选项卡,然后选择"New µVision Project",弹出“Create New Project”对话框,选择"STM32F407VG"作为项目设备,并输入项目名称和保存路径。接下来,我们需要添加STM32F407芯片的支持库文件。 在Keil的"Project"选项卡下,选择"Manage"->"Pack Installer",在弹出的对话框中选择“STMicroelectronics.STM32F4xx_DFP”,并安装这个pack。 安装完成后,我们需要将其添加到我们的项目中。在Keil的"Project"选项卡下,选择"Options for Target",选择"Device",在"Device"菜单中选择"STM32F407VG"。然后,在"Pack"菜单中,选择“STMicroelectronics.STM32F4xx_DFP”,并将其添加到项目中。这样,就完成了STM32F407芯片包的安装。 综上所述,安装STM32F407芯片包需要先下载、解压缩、复制到安装目录,并在Keil软件中添加支持。这样才能实现快速、高效和灵活的嵌入式软件开发。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值