(学习日记)2023.04.28:STM32的开发环境配置与基础知识

本文详细介绍了STM32的特点,包括基于Cortex-M4的低功耗设计,以及STM32系列的命名规则。还涵盖了开发环境的搭建,如MDK软件安装、USB串口驱动和ST-LINK的安装与配置。此外,讨论了GPIO的基础知识,包括不同工作模式,并提供了STM32CubeMX创建工程的步骤。
摘要由CSDN通过智能技术生成

写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。


标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。


点击此处进入学习日记的总目录

2023.04.28

一、STM32 特点

1、什么是stm32

新的基于ARM内核的32位MCU系列,内核为 Cortex-M 内核,是标准的ARM架构

(1)特点

  • 高性能
  • 低电压
  • 低功耗
  • 创新的内核以及外设
  • 简单易用
  • 自由
  • 低风险

(2)优势

  • 极高的性能: 主流的Cortex内核。
  • 丰富合理的外设,合理的功耗,合理的价格。
  • 强大的软件支持:丰富的软件包。
  • 全面丰富的技术文档。
  • 芯片型号种类多,覆盖面广。
  • 强大的用户基础:最先成功试水CM4芯片的公司,积累了大批的用户群体,为其领先做铺垫。

2、Cortex内核

(1)架构

Cortex-M:微控制器,频率不是很高,常用于工业与控制,追求的是稳定可靠,寿命长;STM32作为代表经典系列:ARM7ARM9ARM 11

Cortex-M4采用ARMv7-ME架构

ARMv7架构定义了三大分工明确的系列:

  • “A”系列:面向尖端的基于虚拟内存的操作系统和用户应用
  • “R”系列:针对实时系统
  • “M”系列:针对微控制器

Cortex-M3采用ARMv7-M架构,Cortex-M0采用ARMv6-M架构,Cortex-A5/A8采用ARMv7-A架构, 传统的ARM7系列采用的是ARMv4T架构。

ARMv7-ME架构是2007年以后才出现的架构,所以最近的板子一般都是采用Cortex内核。
在这里插入图片描述

(2)特点

  • 浮点运算能力
  • 增强的DSP处理指令

在这里插入图片描述

3、Cortex-M4的低功耗设计

在这里插入图片描述

4、Cortex-M家族:STM328大系列产品

在这里插入图片描述

5、STM32命名规则

STM32与ARM之间的关系

ARM是英国的一家芯片设计公司,其最成功的产品莫过于32位嵌入式CPU核——也就是我们现在介绍的ARM系列,而且最常用的是ARM7和ARM9,ARM公司主要提供IP(Intellectual Property core知识产权的核心)核,就是CPU的内核结构,只包括最核心的部分,而不是完整的处理器。ARM把这个核卖给各大半导体公司,如飞利浦、三星、ATMEL,甚至Intel等许多公司。ARM为了提高对于8位机市场的竞争力,推出了一系列 Cortex-M核,STM32就是将Cortex-M作为内核,通过一些外设等组合封装在一起就成了如今流行的32位嵌入式处理器。

ARMv7架构定义了三个面向不同应用场合的系列:

“A”系列:面向基于虚拟内存的操作系统和用户应用;
“R”系列:针对实时系统;
“M”系列:面向微控制器。

在这里插入图片描述

STM32系列产品的分类命名规则

ST:意法半导体,是一个公司的名字。

M:Microelectronics的缩写,表示微控制器,要注意微控制器和微处理器的区别。

32:32bit的意思,表示这是一个32bit的微控制器。
在这里插入图片描述

二、开发环境搭建

1、MDK软件安装

(1)MDK是什么?

RealView MDKKeil公司开发的,为基于CortexARM7ARM9等处理器设备提供的一个完整的开发环境。

MDK=Keil for ARM, 大家学习51的时候就会用到Keil C51

(2)下载

  1. MDK安装包
    即下载Keil软件
    官网下载地址:点击进入

(注:因为是非注册版,所以只能编译不超过32K的代码!!超过32K需要注册,请大家购买正版软件使用。)
点赞获取破解版:---- 破解软件下载密码9ju6 ----------安装教程

  1. 芯片支持包
    即下载板子对应芯片支持包(pack文件)
    官网下载地址:点击进入

(3)安装

  1. 找到MDKexe文件,右键管理员安装。
    在这里插入图片描述
  2. 安装路径不能有空格中文
    在这里插入图片描述
  3. 四个框随便输入,然后NEXT等待几分钟
    在这里插入图片描述
  4. 安装完成后点击FINISH,回到刚才文件目录,双击pack文件,继续等待几分钟的安装。
    在这里插入图片描述

(注:不知道为什么第一次安装pack文件显示无法创建文件夹,我打开一了下keil软件又关闭后又可以继续安装了,属实玄学)

(4)注意事项

  • 安装路径为英文路径(不要是中文路径)。
  • 系统用户名不能为中文。
  • 多个版本MDKKeil)不要安装在同一目录。
  • MDK5需要加载芯片对应的支持包。

2、USB串口驱动安装

(1)驱动下载

下载链接: 点击进入

(2)双击SETUP.EXE,点击安装

在这里插入图片描述
在这里插入图片描述
如果出现安装失败或者预安装,将电脑与板子串口连接,当电脑显示有东西插进来了,再次安装,即可成功。
在这里插入图片描述

3、ST-LINK安装

(1)双击dpinst_amd64.exe安装

在这里插入图片描述

(2)安装成功

在这里插入图片描述
插上STLINK在设备管理器中可以看到驱动。
在这里插入图片描述

(注:若出错,请参考按照STLINK调试补充教程.pdf
由于此pdf仅限个人使用,故无法上传,请诸位移步正点原子官网下载)

三、ST-LINK下载

1、硬件连接

(1)JTAG/SWD接口

在这里插入图片描述
这是开发板板载的20针标准JTAG调试口,该JTAG口直接可以和ULINKJLINK (V9或者以上版本) 或者STLINK等调试器(仿真器)连接,同时由于STM32支持SWD调试,这个JTAG口也可以用SWD模式来连接。

用标准的JTAG调试,需要占用5个IO口,有些时候,可能造成IO口不够用,而用SWD则只需要2个IO口,大大节约了IO数量,但他们达到的效果是一样的,所以我们强烈建议仿真器使用SWD模式。

(2)连接ST-LINK

ST-LINK插在JTAG/SWD接口上,按照STM32笔记二所述方法安装驱动。

2、配置ST-LINK

(1)打开选项

在这里插入图片描述

(2)修改仿真器

  • 点击Debug
  • 选择ST-Link Debugger
  • Run to main()选中
  • 点击Settings
    在这里插入图片描述
    在这里插入图片描述

(3)修改传输设置

具体设置如图:
在这里插入图片描述

(4)修改程序编译设置

  • 点击sector erase(块擦除)
  • 右边的编程验证复位和执行都要选上

在这里插入图片描述

(5)选择对应板子的工程

在这里插入图片描述

(6)配置Flash菜单命令

Use Debug Driver(使用调试驱动程序)、Update Target before Debugging(调试前更新目标)两个选项选中
在这里插入图片描述

四、新建寄存器工程模板

1、找到STM32CubeFX固件包(X为板子的型号)

将固件包解压
在这里插入图片描述
在这里插入图片描述

2、新建工程目录,复制需要的文件到工程目录

  1. 新建一个文件夹,在文件夹中新建一个USER文件夹和一个HEADER文件夹
    在这里插入图片描述

  2. USER文件夹里新建一个工程
    在这里插入图片描述
    在这里插入图片描述

  3. 按照自己板子的型号来选择创建类型
    在这里插入图片描述

  4. 环境选项中选择Cancel
    在这里插入图片描述

  5. 会发现文件夹中出现了一些文件,其中uvprojx是打开文件
    在这里插入图片描述

3、把工程需要的文件添加到工程

  1. 在固件包中找到图片中的文件
    在这里插入图片描述
  2. startup_stm32f767xx.s放到USER文件夹中,
    将其余h文件放到HEADER文件夹中。
    在这里插入图片描述
    在这里插入图片描述

4、在MDK中设置头文件存放路径

  1. 打开文件管理器,并将启动文件startup_stm32f767xx.s)导入
    在这里插入图片描述
    在这里插入图片描述
  2. 如果文件头像上有钥匙,就将启动文件startup_stm32f767xx.s)的只读属性取消勾选。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 将头文件文件夹导入
    在这里插入图片描述
    在这里插入图片描述

注:软件不会沿着目录向下寻找,所以所有头文件必须精确到根目录)

5、配置MDK:全局宏定义等

根据不同的板子、不同的工程将不同的预编译全局宏定义标识符输入
在这里插入图片描述

6、编写用户函数

  1. USER创建一个txt,把后缀改成.c
    在这里插入图片描述
  2. 将.c文件导入
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 程序需注意的地方
    (1)程序末尾必须要有回车
    (2)由于程序默认在复位后运行SystemInit()函数,所以要么将SystemInit()函数注释掉,要么在main()函数前加一个空的SystemInit()函数。
    在这里插入图片描述
    在这里插入图片描述

7、添加ALIENTEK系统文件夹SYSTEM

  1. 在目标文件夹找到SYSTEM 文件夹,将其拷到USERHEADER所在的文件夹。
    在这里插入图片描述
  2. 将其内的c文件依次导入
    在这里插入图片描述
  3. 将三个c文件的头文件坐在目录导入
    在这里插入图片描述
  4. 编译–成功

8、导入到开发板

详情参考另一篇笔记(STM32笔记)三、ST-LINK下载

五、初学HAL库

1、固件库和寄存器的区别

固件库就是函数的集合(API),把寄存器操作封装起来。

STM32寄存器成百上千,一一操作非常不便。通过API把寄存器操作封装起来,这样大家不需要在记寄存器的每个位,而是直接操作固件库函数。简单方便很多。

固件库不是万能的。要想全面的掌握STM32,必须对寄存器有一定的了解,尤其是入门学习的时候。只有通过对寄存器有一个基本的了解,才能全面掌握了STM32各个功能外设的工作原理,才能更好的使用固件库。

对于寄存器,大家不需要去死记硬背寄存器名称以及每个位作用,大家只需要大致的了解大致的配置过程,这样在开发中遇到问题,就可以通过调试直接查看寄存器配置,从而找出问题所在。

2、HAL库包和关键文件介绍

在这里插入图片描述

(注:具体的库还需要以后在使用中慢慢熟悉,故本章笔记是一个不断补充的笔记。)

六、新建HAL库工程模板

1、找到STM32CubeFX固件包(X为板子的型号)

将固件包解压
在这里插入图片描述
在这里插入图片描述

2、新建工程目录,复制需要的文件到工程目录

  1. 新建一个文件夹,在文件夹中新建一个USER文件夹、HALLIB文件夹(外设库文件夹,放置HAL库)、CORE文件夹(启动文件夹,放置内核)、OBJ文件夹(放置编译中介文件)
    在这里插入图片描述

  2. 在固件包中找到图片中的文件
    在这里插入图片描述

  3. Inc(外设程序头文件)、Src(外设程序源文件)文件夹放到HALLIB文件夹中。
    在这里插入图片描述

  4. startup_stm32f767xx.s(启动文件)放到CORE文件夹中,
    在这里插入图片描述

  5. 内核头文件文件放到CORE文件夹中。
    在这里插入图片描述

  6. 顶层头文件主头文件源文件放到USER文件夹中。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3、新建工程

  1. USER文件夹里新建一个工程
    在这里插入图片描述
    在这里插入图片描述

  2. 按照自己板子的型号来选择创建类型
    在这里插入图片描述

  3. 环境选项中选择Cancel
    在这里插入图片描述

  4. 会发现文件夹中出现了一些文件,其中uvprojx是打开文件
    在这里插入图片描述

4、在MDK中设置头文件存放路径

  1. 打开文件管理器,并将启动文件startup_stm32f767xx.s)导入
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 如果文件头像上有钥匙,就将启动文件startup_stm32f767xx.s)的只读属性取消勾选。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 将其余几个文件夹和其中的.h.c文件导入,文件类型选择All files
    在这里插入图片描述
    其中有几个.c文件不需要,删除即可。
    在这里插入图片描述

  3. 把带钥匙的文件取消只读选项。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. 将头文件文件夹导入
    在这里插入图片描述
    在这里插入图片描述

注:软件不会沿着目录向下寻找,所以所有头文件必须精确到根目录)

5、配置MDK:全局宏定义等

  1. 根据不同的板子、不同的工程将不同的预编译全局宏定义标识符输入
    在这里插入图片描述
  2. 根据不同板子规格修改外部晶振
    在这里插入图片描述
  3. 勾选生成HEX工程文件选项
    在这里插入图片描述
  4. 设置编译中间文件的存放目录
    在这里插入图片描述

6、编写用户函数

  1. main.h#include "stm32f7xx_nucleo_144.h"删除
    在这里插入图片描述

  2. main.c函数中的内容删掉即可开始编程
    在这里插入图片描述

  3. 程序需注意的地方
    (1)程序末尾必须要有回车

7、修改修改相关文件参数适配开发板

  1. HALLIB文件夹中打开stm32f7xx_hal.h下的stm32f7xx_hal_conf.h
    找到#define HSE_VALUE,将后面的晶振改成板子的晶振,我是用的板子晶振是25MHz,所以把8000000U改成25000000U
    在这里插入图片描述
    在这里插入图片描述
  2. HALLIB文件夹中打开stm32f7xx_hal.h
    找到HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);,将优先级分组从4改为2,即HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2);
    在这里插入图片描述

8、添加ALIENTEK系统文件夹SYSTEM

  1. 在目标文件夹找到SYSTEM 文件夹,将其拷到USERHEADER所在的文件夹。
    在这里插入图片描述
  2. 将其内的c文件依次导入
    在这里插入图片描述
  3. 将三个c文件的头文件坐在目录导入
    在这里插入图片描述
  4. 编译–成功

9、导入到开发板

详情参考另一篇笔记(STM32笔记)三、ST-LINK下载

七、GPIO基础知识

1、GPIO介绍

GPIO(全称:General Purpose Input Output(通用输入输出端口))是一款端口扩展器,可以做输入也可以做输出。GPIO端口可通过程序配置成输入或者输出。

GPIO具有低功耗、小封装、低成本、布线简单等优点。

STM32的引脚中,有部分是做GPIO使用,部分是电源引脚/复位引脚/启动模式引脚/晶振引脚/调试下载引脚

2、GPIO八种工作模式解释(STM32

本小节图片引用自【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)

Cortex-M3里,对于GPIO的配置种类有8种:

  1. GPIO_Mode_AIN 模拟输入
  2. GPIO_Mode_IN_FLOAtiNG 浮空输入
  3. GPIO_Mode_IPD 下拉输入
  4. GPIO_Mode_IPU 上拉输入
  5. GPIO_Mode_Out_OD开漏输出
  6. GPIO_Mode_Out_PP 推挽输出
  7. GPIO_Mode_AF_OD 复用开漏输出
  8. GPIO_Mode_AF_PP 复用推挽输出
    在这里插入图片描述

1)4种输入模式

(1)浮空输入
  1. GPIO_Mode_IN_FLOATING
  2. 作用:
    当输入一个高电平时,会检测到高电平;
    当输入低电平时,会检测到低电平;
    当无信号输入时,该端口的电平是不确定的。
  3. 原理:
    浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器
    当引脚悬空(在无信号输入)的情况下,I/O的电平状态是不确定的,会因为各种各样的情况受到干扰。
    在这里插入图片描述
  4. 参考资料:
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    GPIO工作模式
    最详细易懂的GPIO解释
(2)上拉输入
  1. GPIO_Mode_IPU
  2. 作用:
    当输入一个高电平时,会检测到高电平;
    当输入低电平时,会检测到低电平;
    当无信号输入时,会检测到高电平。
  3. 原理:
    上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器
    当输入一个高电平时,VDD不产生影响;
    当输入低电平时,上拉电阻压降为VDDVDD不产生影响;
    当无信号输入时,由于上拉电阻电流很小,所以降压很低,故会检测到高电平。
    在这里插入图片描述
  4. 参考资料:
    视频12分50秒
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    GPIO工作模式
    最详细易懂的GPIO解释
(3)下拉输入
  1. GPIO_Mode_IPD
  2. 作用:
    当输入一个高电平时,会检测到高电平;
    当输入低电平时,会检测到低电平;
    当无信号输入时,会检测到低电平。
  3. 原理:
    下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器
    当输入一个高电平时,下拉电阻电流很小,VSS不产生影响;
    当输入低电平时,VSS不产生影响;
    当无信号输入时,下拉电阻两端皆为低电平,故会检测到低电平。
    在这里插入图片描述
  4. 参考资料:
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    GPIO工作模式
    最详细易懂的GPIO解释
(4)模拟输入
  1. GPIO_Mode_AIN
  2. 作用:
    将不会检测到电平信息,会检测到完整的电压变化。
  3. 原理:
    模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到外设模块,比如ADC模块等等。
    在这里插入图片描述
  4. 参考资料:
    GPIO工作模式
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    最详细易懂的GPIO解释

2)4种输出模式(带上下拉)

(1)开漏输出(带上拉或者下拉)
  1. GPIO_Mode_Out_OD
  2. 作用:
    当设置输出为高电平时,端口输出高低电平由端口外的上拉或下拉决定。
    当设置输出为低电平时,端口输出低电平。
    当输出低电平以后,端口可以进行输入。
  3. 原理:
    当设置输出为高电平的时候,N-MOS管处于关闭状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;
    当设置输出的值为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平。
    同时,I/O端口的电平也可以通过输入电路进行读取;
    注意,I/O端口的电平不一定是输出的电平,电平由上拉电阻控制。
    在这里插入图片描述
  4. 参考资料:
    GPIO工作模式
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    最详细易懂的GPIO解释
(2)复用开漏输出(带上拉或者下拉)
  1. GPIO_Mode_AF_OD
  2. 作用:
    当外设输出为高电平时,端口输出高低电平由端口外的上拉或下拉决定。
    当外设输出为低电平时,端口输出低电平。
    当输出低电平以后,端口可以进行输入。
  3. 原理:
    与开漏输出相同,只不过由外设控制高低电平。
    在这里插入图片描述
  4. 参考资料:
    GPIO工作模式
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    最详细易懂的GPIO解释
(3)推挽式输出(带上拉或者下拉)
  1. GPIO_Mode_Out_PP
  2. 作用:
    当设置输出为高电平时,端口输出高电平。
    当设置输出为低电平时,端口输出低电平。
    当输出低电平以后,端口可以进行输入。
  3. 原理:
    当设置输出为高电平的时候,P-MOS管处于开启状态,N-MOS管处于关闭状态,此时I/O端口的高电平由P-MOS管的VDD决定;
    当设置输出的值为低电平的时候,N-MOS管处于开启状态,P-MOS管处于关闭状态,此时I/O端口的电平就是低电平。
    在这里插入图片描述
  4. 参考资料:
    GPIO工作模式
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    最详细易懂的GPIO解释
(4)复用推挽输出(带上拉或者下拉)
  1. GPIO_Mode_AF_PP
  2. 作用:
    当外设输出为高电平时,端口输出高电平。
    当外设输出为低电平时,端口输出低电平。
    当输出低电平以后,端口可以进行输入。
  3. 原理:
    与推挽输出相同,只不过由外设控制高低电平。
    在这里插入图片描述
  4. 参考资料:
    GPIO工作模式
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    最详细易懂的GPIO解释

3)八种工作模式的区别

(1)什么是推挽结构和推挽电路?

推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务。电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。

(2)开漏输出和推挽输出的区别?

开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内);
推挽输出:可以输出强高、低电平,连接数字器件。
关于推挽输出和开漏输出,最后用一幅最简单的图形来概括:
在这里插入图片描述
该图中左边的便是推挽输出模式,其中比较器输出高电平时下面的PNP三极管截止,而上面NPN三极管导通,输出电平VS+;当比较器输出低电平时则恰恰相反,PNP三极管导通,输出和地相连,为低电平。右边的则可以理解为开漏输出形式,需要接上拉。

(3)在STM32中选用怎样选择I/O模式?
  1. 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1
  2. 带上拉输入_IPU——引脚内部上拉电阻输入
  3. 带下拉输入_IPD—— 引脚内部下拉电阻输入
  4. 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电
  5. 开漏输出_OUT_OD ——引脚设为0时输出低电平,引脚设为1时悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,引脚的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样引脚口也就可以由外部电路改变为低电平或不变。可以读引脚输入电平变化,实现C51 \ STM32的引脚双向功能
  6. 推挽输出_OUT_PP——IO输出0接GNDIO输出1接VCC,读输入值是未知的
  7. 复用功能的推挽输出_AF_PP ——片内外设功能(I2CSCLSDA
  8. 复用功能的开漏输出_AF_OD——片内外设功能(TX1MOSIMISO.SCK.SS
(4)STM32 设置实例:
  1. 模拟I2C 使用开漏输出_OUT_OD,接上拉电阻,能够正确输出 0 和 1;读值时先GPIO_SetBits(GPIOBGPIO_Pin_0)拉高,然后可以读IO的值,使用GPIO_ReadInputDataBit(GPIOBGPIO_Pin_0);
  2. 如果是无上拉电阻,IO 默认是高电平;
  3. 需要读取IO的值,可以使用带上拉输入_IPU 和浮空输入_IN_FLOATING 和开漏输出_OUT_OD

4)IO 端口复用功能配置:

  1. 对于复用功能输入,端口可以配置成任意输入模式或者复用功能输出模式。
  2. 对于复用功能输出,端口必须配置成复用功能输出
  3. 对于双向复用功能,端口必须配置成复用功能输出
  4. stm32 的部分 IO 端口的复用功能可以重新映射成另外的复用功能。
  5. stm32 具有 GPIO 锁定机制,即锁定 GPIO 配置,下次复位前不能再修改。
  6. LSE 振荡器关闭时,OSC32_IN OSC32_OUT 可以用作通用 IO PC14PC15
  7. 当进入待机模式或者备份域由 Vbat 供电,PC14PC15 功能丢失,该两个 IO 口线设置为模拟输入功能。
  8. OSC_INOSC_OUT 可以重新映射为 GPIO PD0PD1
  9. 注意 PD0PD1 用于输出地时候仅能用于 50MHz 输出模式。
  10. 注意:PC13PC14PC15 只能用于 2MHz 的输出模式,最多只能带 30pf 的负载,并且同时只能使用一个引脚!!!

5)上电复位后IO口状态

上电复位后,GPIO默认为输入浮空状态,部分特殊功能引脚为特定状态。

复位后,调试引脚处于复用功能上拉/下拉状态:

  • PA15JTDI处于上拉状态
  • PA14JTCK/SWCLK处于下拉状态
  • PA13JTMS/SWDAT处于下拉状态
  • PB4NJTRST处于上拉状态
  • PB3JTDO处于浮空状态

3、开发板芯片的引脚常用参数

注:由于我使用的是STM32F767,所以本小节分析STM32F767IGT6的参数

在这里插入图片描述
在这里插入图片描述

  1. 引脚数量:176 / 4个方向
  2. 主频:180 MHz
  3. 内核:ARM Cortex-M7
  4. Flash:1024 KB
  5. 封装:LQFP176
  6. 通用IO数量:132
  7. 最低工作电压:1.7 V
  8. 最高工作电压:3.6 V
  9. 一共9组IO:PA ~ PI
    PA ~ PH每组16个IO(Pa0 ~ Pa15),PI只有12个IO(PI0 ~ PI11
    共140个IO口。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

八、STM32CubeMX创建工程

1、安装

  1. 打开官网,下载windows最新版。
    在这里插入图片描述
  2. 接受许可协议
    在这里插入图片描述
  3. 由于笔者已经装好了,安装过程唯一需要注意的也就是英文路径别装C盘,其余一路NEXT就行了。

2、创建工程

  1. 打开STM32CubeMX
    在这里插入图片描述

  2. 创建新项目
    在这里插入图片描述

  3. 搜索栏可以直接搜索板子型号,也可根据搜索框下的各个参数来限制搜索范围。
    参数从上至下依次为

  • 内核
  • 系列
  • 线程
  • 芯片包
  • 其他
  • 引脚功能类型
    在这里插入图片描述
  1. 点击找到的板子型号(我是用的是STM32F767,诸位按照自己板子),点击右上角的Start Project
    在这里插入图片描述
    本系列可能需要暂停,板子我找不到了。。。
    我又回来啦!!!接下来是以学习日记的形式,使用的开发板为STM32F103,回见!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YunB西风英

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值