STM32F407VET6 学习笔记1:GPIO引脚认识分类与开发板原理图

今日学习STM32F407VET6 ,首先从基本原理图、引脚方面开始做个初步理解并整理:

这里使用的学习开发板是在嘉立创购买的 立创梁山派天空星,芯片是 STM32F407VET6

主要对这个芯片的引脚做一些归纳认识、对开发学习板原理图设计进行认识理解:最后就是尝试点亮一个LED灯

文章提供测试代码讲解、完整工程下载、测试效果图

目录

pack包的安装:

STM32F407VET6引脚GPIO归纳:

GPIO总线挂载:

定时器引脚:

串口引脚:

CAN通信引脚:

SPI通信引脚:

I2C通信引脚:

开发板的基本参数理解:

 开发板原理图(部分):

与ST_LINK下载器的连接:

点亮LED代码:

测试效果图:

测试工程与资料手册下载:


pack包的安装:

 这一步知识提示大家学习新的单片机型号时别忘记添加新的型号的pack包

 一般商家提供的资料中会有个pack包,keil没有添加这个pack的便需要添加,否则无法正常编程

 这个直接双击安装就行了:

STM32F407VET6引脚GPIO归纳:

STM32F407VET6 根据STM命名规则可知,共有100个引脚

引脚定义在STM32F407_405英文数据手册英文数据手册的47页

以手册为主、归纳是我自己人工完成的,可能有错误!

GPIO总线挂载:

在使用标准库函数进行编程配置GPIO时,第一步就需要开启对应的GPIO的总线时钟,以下为外设总线以及其相对应的外设:

RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState)

RCC_AHB2PeriphClockCmd(uint32_t RCC_AHB2Periph, FunctionalState NewState)

RCC_AHB3PeriphClockCmd(uint32_t RCC_AHB3Periph, FunctionalState NewState)

RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)

RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

定时器引脚:

其中TIM1和TIM8是高级计时器、TIM2~TIM5是通用计时器

STM32F407的定时器通常连接到特定的GPIO引脚作为输入捕获、输出比较或PWM输出。

例如TIM1可以连接到PA8, PA9, PA10, PA11等引脚。

其他定时器(TIM2, TIM3, TIM4, TIM5, TIM8等)也会连接到不同的GPIO引脚。

CH1CH2CH3CH4ETRBKIN
TIM1

PA7(CH1N)

PE8(CH1N)

PE9

PB13(CH1N)

PA8

PB0(CH2N)

PE10(CH2N)

PE11

PB14(CH2N)

PA9

PB1(CH3N)

PE12(CH3N)

PE13

PB15(CH3N)

PA10

PE14

PA11

PE7

PA12

PA6

PE15

PB12

TIM2

PA0

PA5

PA1

PB3

PA2

PB10

PA3

PB11

PA0

PA5

PA15

TIM3

PA6

PC6

PB4

PA7

PC7

PB5

PB0

PC8

PB1

PC9

PD2
TIM4

PD12

PB6

PD13

PB7

PD14

PB8

PD15

PB9

PE0
TIM5

PA0

PH10

PA1

PH11

PA2

PH12

PA3

PI0

TIM8

PA5(CH1N)

PA7(CH1N)

PC6

PH13(CH1N)

PI5

PB0(CH2N)

PB14(CH2N)

PC7

PH14(CH2N)

PI6

PB1(CH3N)

PB15(CH3N)

PC8

PH15(CH3N)

PI7

PC9

PI2

PA0

PI3

PA6

PI4

TIM9
PE5\PA2
PE6\PA3
TIM10

PF6

PB8

TIM11

PF7

PB9

TIM12

PH6

PB14

PH9

PB15

TIM13PF8\PA6
TIM14PF9\PA7

串口引脚:

TXRXCTSRTSCK
USART1

PA9

PB6

PA10

PB7

PA0

PA11

PA12
USART2

PA2

PD5

PA3

PD6

PD3

PA1

PD4

PA4

PD7

USART3

PB10

PD8

PC10

PB11

PD9

PC11

PB13

PD11

PB14

PD12

PB12

PD10

PC12

USART4

PA0

PC10

PA1

PC11

USART5PC12PD2
USART6

PC6

PG14

PC7

PG9

PG13

PG15

PG8

PG12

PG7

PC8

CAN通信引脚:

CAN_RXCAN_TX
CAN1

PB8

PI9

PA11

PD0

PB8

PB9

PA12

PD1

PB9

CAN2

PB12

PB5

PB13

PB6

SPI通信引脚:

SCKMISOMOSINSS
SPI1

PA5

PB3

PA6

PB4

PA7

PB5

PA4

PA15

SPI2

PB10

PB13

PI1

PC2

PB14

PI2

PC3

PB15

PI3

PB12

PI0

SPI3

PC10

PB3

PC11

PB4

PC12

PB5

PA4

PA15

I2C通信引脚:

SCLSDASMBA
I2C1

PB6

PB8

PB7

PB9

PB5
I2C2

PH4

PB10

PF0

PH5

PB11

PF2

PH6

PB12

I2C3

PH7

PA8

PH8

PC9

PH9

PA9

开发板的基本参数理解:

 开发板原理图(部分):

 作为笔记,这里贴一些自己以后可能用到的原理图供自己查阅,不是全部......

 

 

与ST_LINK下载器的连接:

 按照以下方式连接开发板与ST_LINK下载器:

SWO------SWIM

CLK  ------SWCLK

DIO  ------SWDIO

5V0  ------5.0V

RST  ------RST

GND ------GND

在下载程序时  别忘记在魔棒更改选择对应的 debug仿真器:

点亮LED代码:

 这代码是立创商家给的例程代码,这里贴出学习使用:

初始化LED端口:

void led_init(void)
{//开GPIO总线RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);GPIO_InitTypeDef  GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin 	= GPIO_Pin_2;GPIO_InitStructure.GPIO_Mode 	= GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType 	= GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed   = GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_PuPd 	= GPIO_PuPd_NOPULL;//使用结构体初始化GPIOGPIO_Init(GPIOB, &GPIO_InitStructure);//GPIO初始化输出0GPIO_ResetBits(GPIOB,GPIO_Pin_2);flag = 0;
}

初始化按键端口:

	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);GPIO_InitTypeDef  GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;GPIO_Init(GPIOA, &GPIO_InitStructure);

按键扫描函数:

void key_scan(void)
{if( SET == GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) ){/* 延迟消抖 */delay_ms(20);if( flag ){GPIO_SetBits(GPIOB, GPIO_Pin_2);flag = 0;}else{GPIO_ResetBits(GPIOB, GPIO_Pin_2);flag = 1;}printf("Key Press!!\r\n");while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == SET) // 等待按键松开{}/* 延迟消抖 */delay_ms(20);printf("Key Release!!\r\n");}	
}

测试效果图:

没按按键:

按下一次按键:

测试工程与资料手册下载:

 https://download.csdn.net/download/qq_64257614/89275988

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

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

相关文章

新的字符设备注册方式和自动创建节点

文章目录 前言一、设备号的申请1.自动申请设备号2.用户指定设备号 二、获取设备号的程序格式1.格式 三、字符设备注册1.新的字符设备注册方法 四、节点的自动创建1.mdev机制2.mdev机制实现流程①创建一个类②创建一个设备 五、总结流程六、文件私有数据 前言 💦 re…

食品饮料-冲饮市场线上发展现状:香飘飘品牌监控数据分析

近期,老国货品牌香飘飘在国内备受关注,起因是某网友在日本华人超市内看到香飘飘Meco果汁茶产品包装统一增加了几组“海洋不是日本的下水道”、“请日本政客豪饮核污水”、“地球可以没有日本但不能没有海洋”等中日双语标语,正大光明讽刺日本…

茶多酚复合纳米纤维膜

茶多酚复合纳米纤维膜是一种结合了茶多酚与纳米纤维技术的创新材料。茶多酚作为茶叶中多酚类物质的总称,具有抗氧化、抗辐射、抗*等多种药理作用,是一种非常有益的天然物质。而纳米纤维膜则因其超细纤维结构、高比表面积和高孔隙率等特性,在过…

(五)JVM实战——JVM性能调优与监控

JVM调优案例的场景 为什么要调优:防止或者解决jvm虚拟机中的OOM问题;减少FullGC出现的频率,解决系统运行卡、慢问题JVM调优案例的四个方面 OOM(堆溢出):java heap spaceOOM(元空间溢出):MetaspaceOOM(GC overhead lim…

腾讯技术面霸挑战赛开启!破解奇葩题赢10000元现金好礼

金三银四,求职正当时,在互联网的技术面试中,对程序员的考察从技术知识到逻辑思维、行为测试,乃至难度颇高的智力题,考验临场反应的职场高情商“送命题”。让人大呼奇葩的技术面试题,你能破解几道&#xff1…

区间预测——conformal tights

conformal tights 是一个python包 特征: sklearn元估计器:向任何scikit-learn回归器添加分位数和区间的共形预测 darts预测:向任何scikit-learn回归器添加共形校准的概率预测 保形校准:准确的分位数和可靠的覆盖的区间 相干分…

暗区突围服务器连接失败/网络异常/无法连接下载解决方法

暗区突围是一款仿真战场的模拟,首要介绍的自然是游戏中基本都会参与的模式,叫做战术行动,大家参与其中是会作为特遣队员的身份来做任务,面临的是一个全面自给自足的战场环境,这种模式要求玩家在进入暗区之前自行筹备所…

Linux下使用RAID

目录 1. 创建RAID准备 2. 创建RAID 0 2.1. 创建磁盘阵列 (1)创建磁盘阵列 (2)查看磁盘阵列信息 (3)挂载文件系统 (4)保存RAID信息 (5)开机自动挂载RA…

阿里云国际服(alibabacloud)介绍、注册、购买教程?

一、什么是阿里云国际版? 阿里云分为国内版和国际版。国内版仅面向中国大陆客户,国际版面向全球客户。 二、国际版与国内版有何异同? 1)异:除了目标客户不同,运营主体不同,所需遵守的法律与政…

【吃透Java手写】Spring(下)-AOP-事务及传播原理

【吃透Java手写】Spring(下)AOP-事务及传播原理 6 AOP模拟实现6.1 AOP工作流程6.2 定义dao接口与实现类6.3 初始化后逻辑6.4 原生Spring的方法6.4.1 实现类6.4.2 定义通知类,定义切入点表达式、配置切面6.4.3 在配置类中进行Spring注解包扫描…

Java多线程编程之synchronizaed和锁分类

并发编程第三周 1 锁的分类 1.1 可重入锁,不可重入锁 Java提供的synchronized,ReentrantLock,ReentrantReadWriteLock都是可重入锁 可重入:当前线程获取到A锁,在获取之后尝试再次获取A锁是可以直接拿到的。 不可重入:当前线程…

美业SaaS系统多门店收银系统源码-【分润常见问题】讲解(二)

美业管理系统源码 博弈美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 ▶ 分润常见问题: 4、若产品的服务方分润>0,则销售方分润和服…

Unity Shader中获取像素点深度信息

1.顶点着色器中对深度进行计算 v2f vert(appdata v) {v2f o;o.pos UnityObjectToClipPos(v.vertex);o.uv TRANSFORM_TEX(v.uv, _MainTex);o.depth (o.pos.z / o.pos.w 1.0) * 0.5; // Normalize depth to [0, 1]return o; }但是达不到预期,最后返回的值一直大于…

2024智能电网与能源系统国际学术会议(ICSGES2024)

2024智能电网与能源系统国际学术会议(ICSGES2024) 会议简介 我们诚挚邀请您参加将在南京隆重举行的2024年智能电网与能源系统国际学术会议(ICSGES2024)。南京,一座历史与现代交织的城市,将为这场盛会提供独特的学术…

力扣刷题--数组--第一天

一、数组 数组特点: 连续内存空间存储得数据元素类型一致数组可以通过下标索引查找数据元素,可以删除、替换、添加元素等 1.1 二分查找 使用二分查找需满足得条件: 数组是有序的;数组中没有重复元素;查找的target…

论文辅助笔记:TimeLLM

1 __init__ 2 forward 3 FlattenHead 4 ReprogrammingLayer

暗区突围进不去/游戏无法启动/掉帧卡顿/报错的解决方法

暗区突围是一款高拟真硬核射击手游,打造了全新的沉浸式暗区战局体验,发行商是腾讯公司。这个游戏名词虽然看起来有些陌生,但其本身的玩法内核毫无疑问的是,这款游戏在画面质量和枪械操作方面,都是手游市场上同类游戏中…

springboot模块以及非springboot模块构成的多模块maven项目最佳构建方式

文章目录 背景一般的实现使用spring-boot-dependencies 更优雅的实现. 背景 有时候构建一个多模块maven项目其中某一个模块是web-service需要使用spring boot,其他模块跟spring boot 完全无关,本文总结一下在这个场景下maven项目最佳构建方式. 一般的实现 网上应该也看到过很…

我独自升级崛起下载教程 我独自升级崛起怎么一键下载

定于5月8日全球盛大发布的动作RPG力作《我独自升级崛起》,基于备受追捧的同名动画及网络漫画,誓为热情洋溢的游戏爱好者们呈献一场深度与广度兼具的冒险盛宴。这款游戏巧妙融合网络武侠元素,其创意十足的设计框架下,核心叙述聚焦于…

记录一次给PCAN升级固件pcan_canable_hw-449dc73.bin

方法一:网页升级 首先将3.3V与BOOT短接,插入电脑USB接口,识别为STM32 BOOTLOADER,芯片进入DFU模式。 如果电脑没有识别到STM32 BOOTLOADER,或无法驱动,则需要安装ImpulseRC_Driver_Fixer修复工具。 推荐使用Google浏览器打开网页升级选择PCAN固件,点Connect and Update,…