(学习日记)2023.04.28
写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。
点击此处进入学习日记的总目录
2023.04.28
- 一、`STM32` 特点
- 1、什么是`stm32`
- (1)特点
- (2)优势
- 2、`Cortex`内核
- (1)架构
- (2)特点
- 3、`Cortex-M4`的低功耗设计
- 4、`Cortex-M`家族:`STM32`8大系列产品
- 5、`STM32`命名规则
- STM32与ARM之间的关系
- STM32系列产品的分类命名规则
- 二、开发环境搭建
- 1、`MDK`软件安装
- (1)`MDK`是什么?
- (2)下载
- (3)安装
- (4)注意事项
- 2、USB串口驱动安装
- (1)驱动下载
- (2)双击`SETUP.EXE`,点击安装
- 3、`ST-LINK`安装
- (1)双击`dpinst_amd64.exe`安装
- (2)安装成功
- 三、ST-LINK下载
- 1、硬件连接
- (1)`JTAG/SWD接口`
- (2)连接`ST-LINK`
- 2、配置`ST-LINK`
- (1)打开选项
- (2)修改仿真器
- (3)修改传输设置
- (4)修改程序编译设置
- (5)选择对应板子的工程
- (6)配置Flash菜单命令
- 四、新建寄存器工程模板
- 1、找到`STM32CubeFX`固件包(`X`为板子的型号)
- 2、新建工程目录,复制需要的文件到工程目录
- 3、把工程需要的文件添加到工程
- 4、在MDK中设置头文件存放路径
- 5、配置MDK:全局宏定义等
- 6、编写用户函数
- 7、添加`ALIENTEK`系统文件夹`SYSTEM `
- 8、导入到开发板
- 五、初学HAL库
- 1、固件库和寄存器的区别
- 2、HAL库包和关键文件介绍
- 六、新建HAL库工程模板
- 1、找到`STM32CubeFX`固件包(`X`为板子的型号)
- 2、新建工程目录,复制需要的文件到工程目录
- 3、新建工程
- 4、在MDK中设置头文件存放路径
- 5、配置MDK:全局宏定义等
- 6、编写用户函数
- 7、修改修改相关文件参数适配开发板
- 8、添加`ALIENTEK`系统文件夹`SYSTEM `
- 9、导入到开发板
- 七、`GPIO`基础知识
- 1、`GPIO`介绍
- 2、`GPIO`八种工作模式解释(`STM32`)
- 1)4种输入模式
- (1)浮空输入
- (2)上拉输入
- (3)下拉输入
- (4)模拟输入
- 2)4种输出模式(带上下拉)
- (1)开漏输出(带上拉或者下拉)
- (2)复用开漏输出(带上拉或者下拉)
- (3)推挽式输出(带上拉或者下拉)
- (4)复用推挽输出(带上拉或者下拉)
- 3)八种工作模式的区别
- (1)什么是推挽结构和推挽电路?
- (2)开漏输出和推挽输出的区别?
- (3)在STM32中选用怎样选择I/O模式?
- (4)STM32 设置实例:
- 4)IO 端口复用功能配置:
- 5)上电复位后IO口状态
- 3、开发板芯片的引脚常用参数
- 八、STM32CubeMX创建工程
- 1、安装
- 2、创建工程
一、STM32
特点
1、什么是stm32
新的基于ARM内核的32位MCU
系列,内核为 Cortex-M
内核,是标准的ARM
架构
(1)特点
- 高性能
- 低电压
- 低功耗
- 创新的内核以及外设
- 简单易用
- 自由
- 低风险
(2)优势
- 极高的性能: 主流的
Cortex
内核。 - 丰富合理的外设,合理的功耗,合理的价格。
- 强大的软件支持:丰富的软件包。
- 全面丰富的技术文档。
- 芯片型号种类多,覆盖面广。
- 强大的用户基础:最先成功试水
CM4
芯片的公司,积累了大批的用户群体,为其领先做铺垫。
2、Cortex
内核
(1)架构
Cortex-M
:微控制器,频率不是很高,常用于工业与控制,追求的是稳定可靠,寿命长;STM32
作为代表经典系列:ARM7
、ARM9
、ARM 11
Cortex-M4
采用ARMv7-M
E架构
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
家族:STM32
8大系列产品
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 MDK
是Keil
公司开发的,为基于Cortex
、ARM7
、ARM9
等处理器设备提供的一个完整的开发环境。
MDK
=Keil for ARM
, 大家学习51的时候就会用到Keil C51
。
(2)下载
MDK
安装包
即下载Keil
软件
官网下载地址:点击进入
(注:因为是非注册版,所以只能编译不超过32K的代码!!超过32K需要注册,请大家购买正版软件使用。)
点赞获取破解版:---- 破解软件下载密码9ju6 ----------安装教程
- 芯片支持包
即下载板子对应芯片支持包(pack
文件)
官网下载地址:点击进入
(3)安装
- 找到
MDK
的exe
文件,右键管理员安装。
- 安装路径不能有空格和中文
- 四个框随便输入,然后
NEXT
等待几分钟
- 安装完成后点击
FINISH
,回到刚才文件目录,双击pack
文件,继续等待几分钟的安装。
(注:不知道为什么第一次安装
pack
文件显示无法创建文件夹,我打开一了下keil
软件又关闭后又可以继续安装了,属实玄学)
(4)注意事项
- 安装路径为英文路径(不要是中文路径)。
- 系统用户名不能为中文。
- 多个版本
MDK
(Keil
)不要安装在同一目录。 MDK5
需要加载芯片对应的支持包。
2、USB串口驱动安装
(1)驱动下载
下载链接: 点击进入
(2)双击SETUP.EXE
,点击安装
如果出现安装失败
或者预安装
,将电脑与板子串口连接,当电脑显示有东西插进来了,再次安装,即可成功。
3、ST-LINK
安装
(1)双击dpinst_amd64.exe
安装
(2)安装成功
插上STLINK
在设备管理器中可以看到驱动。
(注:若出错,请参考按照
STLINK调试补充教程.pdf
。
由于此
三、ST-LINK下载
1、硬件连接
(1)JTAG/SWD接口
这是开发板板载的20针标准JTAG
调试口,该JTAG
口直接可以和ULINK
、JLINK
(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、新建工程目录,复制需要的文件到工程目录
新建一个文件夹,在文件夹中新建一个
USER
文件夹和一个HEADER
文件夹
在
USER
文件夹里新建一个工程
按照自己板子的型号来选择创建类型
环境选项中选择
Cancel
会发现文件夹中出现了一些文件,其中
uvprojx
是打开文件
3、把工程需要的文件添加到工程
- 在固件包中找到图片中的文件
- 将
startup_stm32f767xx.s
放到USER
文件夹中,
将其余h
文件放到HEADER
文件夹中。
4、在MDK中设置头文件存放路径
- 打开文件管理器,并将
启动文件
(startup_stm32f767xx.s
)导入
- 如果文件头像上有钥匙,就将
启动文件
(startup_stm32f767xx.s
)的只读属性取消勾选。
- 将头文件文件夹导入
注:软件不会沿着目录向下寻找,所以所有头文件必须精确到根目录)
5、配置MDK:全局宏定义等
根据不同的板子、不同的工程将不同的预编译全局宏定义标识符
输入
6、编写用户函数
- 在
USER
创建一个txt
,把后缀改成.c
- 将.c文件导入
- 程序需注意的地方
(1)程序末尾必须要有回车
(2)由于程序默认在复位后运行SystemInit()
函数,所以要么将SystemInit()
函数注释掉,要么在main()
函数前加一个空的SystemInit()
函数。
7、添加ALIENTEK
系统文件夹SYSTEM
- 在目标文件夹找到
SYSTEM
文件夹,将其拷到USER
和HEADER
所在的文件夹。
- 将其内的c文件依次导入
- 将三个c文件的头文件坐在目录导入
- 编译–成功
8、导入到开发板
详情参考另一篇笔记(STM32笔记)三、ST-LINK下载
五、初学HAL库
1、固件库和寄存器的区别
固件库就是函数的集合(API
),把寄存器操作封装起来。
STM32
寄存器成百上千,一一操作非常不便。通过API
把寄存器操作封装起来,这样大家不需要在记寄存器的每个位,而是直接操作固件库函数。简单方便很多。
固件库不是万能的。要想全面的掌握STM32
,必须对寄存器有一定的了解,尤其是入门学习的时候。只有通过对寄存器有一个基本的了解,才能全面掌握了STM32
各个功能外设的工作原理,才能更好的使用固件库。
对于寄存器,大家不需要去死记硬背寄存器名称以及每个位作用,大家只需要大致的了解大致的配置过程,这样在开发中遇到问题,就可以通过调试直接查看寄存器配置,从而找出问题所在。
2、HAL库包和关键文件介绍
(注:具体的库还需要以后在使用中慢慢熟悉,故本章笔记是一个不断补充的笔记。)
六、新建HAL库工程模板
1、找到STM32CubeFX
固件包(X
为板子的型号)
将固件包解压
2、新建工程目录,复制需要的文件到工程目录
新建一个文件夹,在文件夹中新建一个
USER
文件夹、HALLIB
文件夹(外设库文件夹,放置HAL
库)、CORE
文件夹(启动文件夹,放置内核)、OBJ
文件夹(放置编译中介文件)
在固件包中找到图片中的文件
将
Inc
(外设程序头文件)、Src
(外设程序源文件)文件夹放到HALLIB
文件夹中。
将
startup_stm32f767xx.s
(启动文件)放到CORE
文件夹中,
将
内核头文件
文件放到CORE
文件夹中。
将
顶层头文件
、主头文件
、源文件
放到USER
文件夹中。
3、新建工程
在
USER
文件夹里新建一个工程
按照自己板子的型号来选择创建类型
环境选项中选择
Cancel
会发现文件夹中出现了一些文件,其中
uvprojx
是打开文件
4、在MDK中设置头文件存放路径
- 打开文件管理器,并将
启动文件
(startup_stm32f767xx.s
)导入
如果文件头像上有钥匙,就将
启动文件
(startup_stm32f767xx.s
)的只读属性取消勾选。
将其余几个文件夹和其中的
.h
、.c
文件导入,文件类型选择All files
。
其中有几个.c
文件不需要,删除即可。
把带钥匙的文件取消
只读
选项。
将头文件文件夹导入
注:软件不会沿着目录向下寻找,所以所有头文件必须精确到根目录)
5、配置MDK:全局宏定义等
- 根据不同的板子、不同的工程将不同的
预编译全局宏定义标识符
输入
- 根据不同板子规格修改
外部晶振
- 勾选
生成HEX工程文件
选项
- 设置
编译中间文件
的存放目录
6、编写用户函数
将
main.h
中#include "stm32f7xx_nucleo_144.h"
删除
将
main.c
函数中的内容删掉即可开始编程
程序需注意的地方
(1)程序末尾必须要有回车
7、修改修改相关文件参数适配开发板
- 在
HALLIB
文件夹中打开stm32f7xx_hal.h
下的stm32f7xx_hal_conf.h
找到#define HSE_VALUE
,将后面的晶振改成板子的晶振,我是用的板子晶振是25MHz
,所以把8000000U
改成25000000U
- 在
HALLIB
文件夹中打开stm32f7xx_hal.h
找到HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
,将优先级分组从4
改为2
,即HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2);
8、添加ALIENTEK
系统文件夹SYSTEM
- 在目标文件夹找到
SYSTEM
文件夹,将其拷到USER
和HEADER
所在的文件夹。
- 将其内的c文件依次导入
- 将三个c文件的头文件坐在目录导入
- 编译–成功
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种:
GPIO_Mode_AIN
模拟输入GPIO_Mode_IN_FLOAtiNG
浮空输入GPIO_Mode_IPD
下拉输入GPIO_Mode_IPU
上拉输入GPIO_Mode_Out_OD
开漏输出GPIO_Mode_Out_PP
推挽输出GPIO_Mode_AF_OD
复用开漏输出GPIO_Mode_AF_PP
复用推挽输出
1)4种输入模式
(1)浮空输入
GPIO_Mode_IN_FLOATING
- 作用:
当输入一个高电平时,会检测到高电平;
当输入低电平时,会检测到低电平;
当无信号输入时,该端口的电平是不确定的。 - 原理:
浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器。
当引脚悬空(在无信号输入)的情况下,I/O的电平状态是不确定的,会因为各种各样的情况受到干扰。
- 参考资料:
【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
GPIO工作模式
最详细易懂的GPIO解释
(2)上拉输入
GPIO_Mode_IPU
- 作用:
当输入一个高电平时,会检测到高电平;
当输入低电平时,会检测到低电平;
当无信号输入时,会检测到高电平。 - 原理:
上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。
当输入一个高电平时,VDD
不产生影响;
当输入低电平时,上拉电阻压降为VDD
,VDD
不产生影响;
当无信号输入时,由于上拉电阻电流很小,所以降压很低,故会检测到高电平。
- 参考资料:
视频12分50秒
【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
GPIO工作模式
最详细易懂的GPIO解释
(3)下拉输入
GPIO_Mode_IPD
- 作用:
当输入一个高电平时,会检测到高电平;
当输入低电平时,会检测到低电平;
当无信号输入时,会检测到低电平。 - 原理:
下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。
当输入一个高电平时,下拉电阻电流很小,VSS
不产生影响;
当输入低电平时,VSS
不产生影响;
当无信号输入时,下拉电阻两端皆为低电平,故会检测到低电平。
- 参考资料:
【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
GPIO工作模式
最详细易懂的GPIO解释
(4)模拟输入
GPIO_Mode_AIN
- 作用:
将不会检测到电平信息,会检测到完整的电压变化。 - 原理:
模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到外设模块,比如ADC模块等等。
- 参考资料:
GPIO工作模式
【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
最详细易懂的GPIO解释
2)4种输出模式(带上下拉)
(1)开漏输出(带上拉或者下拉)
GPIO_Mode_Out_OD
- 作用:
当设置输出为高电平时,端口输出高低电平由端口外的上拉或下拉决定。
当设置输出为低电平时,端口输出低电平。
当输出低电平以后,端口可以进行输入。 - 原理:
当设置输出为高电平的时候,N-MOS
管处于关闭状态,此时I/O
端口的电平就不会由输出的高低电平决定,而是由I/O
端口外部的上拉或者下拉决定;
当设置输出的值为低电平的时候,N-MOS
管处于开启状态,此时I/O
端口的电平就是低电平。
同时,I/O
端口的电平也可以通过输入电路进行读取;
注意,I/O
端口的电平不一定是输出的电平,电平由上拉电阻控制。
- 参考资料:
GPIO工作模式
【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
最详细易懂的GPIO解释
(2)复用开漏输出(带上拉或者下拉)
GPIO_Mode_AF_OD
- 作用:
当外设输出为高电平时,端口输出高低电平由端口外的上拉或下拉决定。
当外设输出为低电平时,端口输出低电平。
当输出低电平以后,端口可以进行输入。 - 原理:
与开漏输出相同,只不过由外设控制高低电平。
- 参考资料:
GPIO工作模式
【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
最详细易懂的GPIO解释
(3)推挽式输出(带上拉或者下拉)
GPIO_Mode_Out_PP
- 作用:
当设置输出为高电平时,端口输出高电平。
当设置输出为低电平时,端口输出低电平。
当输出低电平以后,端口可以进行输入。 - 原理:
当设置输出为高电平的时候,P-MOS
管处于开启状态,N-MOS
管处于关闭状态,此时I/O
端口的高电平由P-MOS
管的VDD
决定;
当设置输出的值为低电平的时候,N-MOS
管处于开启状态,P-MOS
管处于关闭状态,此时I/O
端口的电平就是低电平。
- 参考资料:
GPIO工作模式
【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
最详细易懂的GPIO解释
(4)复用推挽输出(带上拉或者下拉)
GPIO_Mode_AF_PP
- 作用:
当外设输出为高电平时,端口输出高电平。
当外设输出为低电平时,端口输出低电平。
当输出低电平以后,端口可以进行输入。 - 原理:
与推挽输出相同,只不过由外设控制高低电平。
- 参考资料:
GPIO工作模式
【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
最详细易懂的GPIO解释
3)八种工作模式的区别
(1)什么是推挽结构和推挽电路?
推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务。电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。
(2)开漏输出和推挽输出的区别?
开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA
以内);
推挽输出:可以输出强高、低电平,连接数字器件。
关于推挽输出和开漏输出,最后用一幅最简单的图形来概括:
该图中左边的便是推挽输出模式,其中比较器输出高电平时下面的PNP
三极管截止,而上面NPN
三极管导通,输出电平VS+
;当比较器输出低电平时则恰恰相反,PNP
三极管导通,输出和地相连,为低电平。右边的则可以理解为开漏输出形式,需要接上拉。
(3)在STM32中选用怎样选择I/O模式?
- 浮空输入
_IN_FLOATING
——浮空输入,可以做KEY
识别,RX1
- 带上拉输入
_IPU
——IO
内部上拉电阻输入 - 带下拉输入
_IPD
——IO
内部下拉电阻输入 - 模拟输入
_AIN
——应用ADC模拟输入,或者低功耗下省电 - 开漏输出
_OUT_OD
——IO
输出0接GND
,IO
输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO
口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO
口也就可以由外部电路改变为低电平或不变。可以读IO
输入电平变化,实现C51
\STM32
的IO
双向功能 - 推挽输出
_OUT_PP
——IO
输出0接GND
,IO
输出1接VCC
,读输入值是未知的 - 复用功能的推挽输出
_AF_PP
——片内外设功能(I2C
的SCL
、SDA
) - 复用功能的开漏输出
_AF_OD
——片内外设功能(TX1
、MOSI
、MISO.SCK.SS
)
(4)STM32 设置实例:
- 模拟
I2C
使用开漏输出_OUT_OD
,接上拉电阻,能够正确输出 0 和 1;读值时先GPIO_SetBits
(GPIOB
,GPIO_Pin_0
)拉高,然后可以读IO
的值,使用GPIO_ReadInputDataBit
(GPIOB
,GPIO_Pin_0
); - 如果是无上拉电阻,
IO
默认是高电平; - 需要读取
IO
的值,可以使用带上拉输入_IPU
和浮空输入_IN_FLOATING
和开漏输出_OUT_OD
;
4)IO 端口复用功能配置:
- 对于复用功能输入,端口可以配置成任意输入模式或者复用功能输出模式。
- 对于复用功能输出,端口必须配置成复用功能输出
- 对于双向复用功能,端口必须配置成复用功能输出
stm32
的部分 IO 端口的复用功能可以重新映射成另外的复用功能。stm32
具有GPIO 锁定机制
,即锁定GPIO
配置,下次复位前不能再修改。LSE 振荡器
关闭时,OSC32_IN
和OSC32_OUT
可以用作通用IO
PC14
和PC15
。- 当进入待机模式或者备份域由
Vbat
供电,PC14
,PC15
功能丢失,该两个IO
口线设置为模拟输入功能。 OSC_IN
和OSC_OUT
可以重新映射为GPIO
PD0
,PD1
。- 注意
PD0
,PD1
用于输出地时候仅能用于50MHz
输出模式。 - 注意:
PC13
,PC14
,PC15
只能用于2MHz
的输出模式,最多只能带30pf
的负载,并且同时只能使用一个引脚!!!
5)上电复位后IO口状态
上电复位后,GPIO
默认为输入浮空状态,部分特殊功能引脚为特定状态。
复位后,调试引脚处于复用功能上拉/下拉状态:
PA15
:JTDI
处于上拉状态PA14
:JTCK
/SWCLK
处于下拉状态PA13
:JTMS
/SWDAT
处于下拉状态PB4
:NJTRST
处于上拉状态PB3
:JTDO
处于浮空状态
3、开发板芯片的引脚常用参数
注:由于我使用的是
STM32F767
,所以本小节分析STM32F767IGT6
的参数
- 引脚数量:176 / 4个方向
- 主频:180 MHz
- 内核:
ARM Cortex-M7
- Flash:1024 KB
- 封装:
LQFP176
- 通用IO数量:132
- 最低工作电压:1.7 V
- 最高工作电压:3.6 V
- 一共9组IO:
PA
~PI
PA
~PH
每组16个IO(Pa0
~Pa15
),PI只有12个IO(PI0
~PI11
)
共140个IO口。
八、STM32CubeMX创建工程
1、安装
- 打开官网,下载windows最新版。
- 接受许可协议
- 由于笔者已经装好了,安装过程唯一需要注意的也就是英文路径和别装C盘,其余一路
NEXT
就行了。
2、创建工程
打开
STM32CubeMX
创建新项目
搜索栏可以直接搜索板子型号,也可根据搜索框下的各个参数来限制搜索范围。
参数从上至下依次为
- 内核
- 系列
- 线程
- 芯片包
- 其他
- 引脚功能类型
- 点击找到的板子型号(我是用的是
STM32F767
,诸位按照自己板子),点击右上角的Start Project
本系列可能需要暂停,板子我找不到了。。。
我又回来啦!!!接下来是以学习日记的形式,使用的开发板为STM32F103
,回见!
(学习日记)2023.04.28相关推荐
- 【学习日记2023.4.25】之 前后端分离_前端工程化_Vue组件库Element_Vue路由_打包部署
文章目录 1. 前后台分离开发 1.1 前后台分离开发介绍 1.2 YAPI 1.2.1 YAPI介绍 1.2.2 接口文档管理 2. 前端工程化 2.1 前端工程化介绍 2.2 前端工程化入门 2. ...
- 【学习日记2023.4.9】之释放资源的方式_编解码_字符流(Reader/Writer)及其子类_转换流( [In/Out]putStreamReader)
文章目录 1. 释放资源的方式 1.1 try-catch-finally 1.1.1 finally 格式 特点 执行时机 1.1.2 处理IO流中的异常 1.2 try-with-resource ...
- 【学习日记2023.5.8】之 springboot案例之登录功能(会话技术_JWT令牌_过滤器_拦截器)
文章目录 1. 案例-登录认证 1. 1登录功能 1.1.1 需求 1.1.2 接口文档 1.1.3 思路分析 1.1.4 功能开发 1.1.5 测试 1.1.6 全后端联调 1.2 登录校验 1.2 ...
- 【学习日记2023.6.9】之 SpringCloud入门(认识微服务_服务拆分和远程调用RestTemplate_Eureka注册中心_Ribbon负载均衡_Nacos注册中心)
文章目录 SpringCloud 1. 认识微服务 1.1 单体架构 1.2 分布式架构 1.3 微服务 1.4 SpringCloud 1.5 总结 2. 服务拆分和远程调用 2.1 服务拆分原则 ...
- (学习日记)2023.04.25
写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈. 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈. 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录, ...
- (学习日记)2023.04.26
写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈. 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈. 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录, ...
- (学习日记)2023.04.24
写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈. 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈. 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录, ...
- (学习日记)2023.04.29
写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈. 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈. 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录, ...
- (学习日记)2023.4.22
写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈. 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈. 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录, ...
最新文章
- c# IO线程 打造 定时打开指定程序
- Blueprint CSS Framework 学习笔记
- android文件导出错误—— failed to pull a selection
- Optical_Flow(2)
- html5 接收蓝牙广播_蓝牙定位技术浅析(化工厂应用)
- pytorch实现图像分类代码实例
- DotNetCore中异步编程的实用演练
- 大型企业Exchange 2010部署方案 – 分割全局地址列表
- 华为鸿蒙os什么时候发布,鸿蒙OS将于今天发布
- ArcEngine中打开各种数据源(WorkSpace)的连接(转)
- Web前端学习 | Ajax
- 证据理论(1)—— DS证据理论基本理论
- Socket 服务器和客户端交互
- 汇编中 rep指令 和 stos指令ollydbg图解
- 用VMware克隆CentOS 6.4后修改HWaddr
- 如何给代码起个好名字
- 双料大奖 | 奇点云获评「年度数字化创新最佳实践奖」「年度数字化服务最值得信赖品牌奖」
- js使用双层for循环实现倒三角形、正三角形
- PAT 1003 我要通过! python
- 转《胡侃学习(理论)计算机》的心得
热门文章
- BZOJ 3379: [Usaco2004 Open]Turning in Homework 交作业
- 魅蓝note3联通卡显示无服务器,魅蓝Note3手机卡(SIM卡)安装方法真机图文详解
- Jspxcms 无入侵式开发
- WPF真入门教程01--WPF简介
- WPF教程一:基础(转)
- OSChina 周日乱弹 —— 康熙看了伤心,乾隆听了流泪
- Java读取文件的内容到String字符串中
- Excel生成Word文档
- 第五阶段 -- 数据库:day21_07/03/19【事务】
- pandas导入excel