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;
	
	//使用结构体初始化GPIO
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	//GPIO初始化输出0
	GPIO_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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

上传文件至linux服务器失败

目录 前言异常排查使用df -h命令查看磁盘使用情况使用du -h --max-depth1命令查找占用空间最大的文件夹 原因解决补充:删除文件后,磁盘空间无法得到释放 前言 使用XFTP工具上传文件至CentOS服务器失败 异常 排查 使用df -h命令查看磁盘使用情况 发现磁盘…

IDEA中git的常用操作(保姆级教学)

IDEA中git的常用操作(保姆级教学) 以下是git的工作原理,觉得繁琐的可以跳过不看 Workspace:工作区 (平时存放代码的地方) Index / Stage:暂存区(用于临时存放存放你的改动,事实上就是一个文件&…

电脑实时监控软件分享|好用实时屏幕监控软件有哪些?

在当今数字化工作环境和远程办公日益普及的背景下,电脑实时监控软件成为了企业管理、教育监控、家庭监护等多个领域的必备工具。这些软件不仅能够帮助管理者实时了解员工的工作状态,确保工作效率,还能有效防止数据泄露,保护企业或…

现场面试题

这里写目录标题 1.sql1.1 只保留学生的最新成绩1.2 统计通话号码数1.3 更新地址 2.基础题2.1 请求序列第N位的值: 0, 1, 1, 2, ,3, 5, 8, 13, 21, 34.....第N位的值2.2 请写一段java代码,输出存在重复字母的单词 1.sql 1.1 只保留学生的最新成绩 表student中记录学…

Vue-组件中的data

一个组件的data选项必须是一个函数。保证每个组件实例,维护独立的一份数据对象。如下图: 组件一旦封装好了,可以使用多次,比如数字框组件使用了三次: 每次创建新的组件实例,都会重新执行一次data函数&#…

leetcode-字符串的排列-100

题目要求 思路 1.因为只涉及到字符,因此可以进行排序 2.创建临时字符串,当临时字符串temp的长度等于str的长度,作为判出条件。 3.创建一个标记的数组,每次在temp中插入一个字符,便在对应的数组下标设置为1&#xff0c…

【PDF技巧】PDF限制编辑密码忘记了,如何编辑文件?

PDF文件打开之后,发现编辑功能都是灰色的,无法使用,无法编辑PDF文件,遇到这种情况,是因为PDF文件设置了限制编辑导致的。一般情况下,我们只需要输入PDF密码,将限制编辑取消就可以正常编辑文件了…

【ARM Cortex-M3指南】8:中断行为

文章目录 八、中断行为8.1 中断/异常流程8.1.1 压栈8.1.2 取向量8.1.3 寄存器更新 8.2 异常退出8.3 嵌套中断8.4 末尾连锁中断8.5 延迟到达8.6 进一步了解异常返回值8.7 中断等待8.8 中断相关的错误8.8.1 压栈8.8.2 出栈8.8.3 取向量8.8.4 非法返回 八、中断行为 8.1 中断/异常…

GPU术语

可向量化循环 可向量化循环通常是指在编程中,能够被转换为向量操作或矩阵运算的循环结构。 在传统编程中,对于数组或向量中的每个元素执行相同的操作时,开发者可能会使用for循环逐一进行处理。然而,许多现代编程语言和库提供了向…

从哪些方面可以看出现货黄金价格走势?

现货黄金价格的走势受到多种因素的影响,我们可以从宏观经济环境、货币政策、供需关系、市场情绪和技术分析几个主要方面来观察和分析这一贵金属的价格动态。现货黄金作为全球投资市场中的避险资产,其价格波动往往能体现出复杂的经济和政治变化。 宏观经济…

(论文阅读-优化器)Orca: A Modular Query Optimizer Architecture for Big Data

目录 摘要 一、简介 二、背景知识 2.1 大规模并行处理 2.2 SQL on Hadoop 三、Orca架构 四、查询优化 4.1 优化工作流 4.2 并行查询优化 五、Metadata Exchange 六、可行性 6.1 Minimal Repros 6.2 优化器准确性测试 七、实验 八、相关工作 8.1 查询优化基础 8…

Python专题:二、Python小游戏,体验Python的魅力

希望先通过一个小的游戏让大家先对Python感兴趣,兴趣是最好的老师。 小游戏的运行结果: 1、在sublime编辑器里面写如下代码: import randomnum random.randint(1, 100) # 获得一个随机数 is_done False # 是否猜中的标记 count 0 # 玩…

视频号小店怎么做?品从哪里来?如何推广售卖?一文详解

大家好,我是电商笨笨熊 视频号小店作为一个刚推出不久的项目,可谓是站在风口,遍地红利,也正是我们进入的最佳时机。 但是面对一个新的项目,自是存在着多种疑问,尤其是对于一些从未踏足电商市场的新手玩家…

SpringBoot+Vue+Element-UI实现医患档案管理系统

目录 前言介绍 系统展示 管理员页面 患者管理 诊疗信息管理 病历信息管理 处方信息管理 患者页面 医生页面 部分核心代码 病历信息 上传文件 数据库配置 前言介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技…

美易官方:英伟达业绩将难以撑起股价?

美股市场似乎总是对各大公司的业绩表现抱有极大的期待,就像一个永远填不饱的“巨胃”。在这样的市场环境下,即使是业绩骄人的公司也可能难以支撑其股价。英伟达,这家在图形处理单元(GPU)领域享有盛誉的公司&#xff0c…

翻译《The Old New Thing》 - Double-clicking radio buttons

Double-clicking radio buttons - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050804-10/?p34713 Raymond Chen 在 2005年08月04日 让对话框单选按钮支持双击确定 提示 本文提供了一种让对话框窗口上的控件支持双击确定窗口返回的方法 …

HG-KN73J-S100 三菱伺服电机(750W型)

HG-KN73J-S100属于三菱MR-JE系列伺服系统,可以与伺服驱动器MR-JE-70A、MR-JE-70B、MR-JE-70C配套使用。HG-KN73J-S100完全替换HF-KN73J-S100。HG-KN73J-S100规格、HG-KN73J-S100参数。 HG-KN73J-S100参数说明:MR-JE低惯性/小容量、0.75Kw三菱伺服电机HG-…

【问题解决】关于linux环境下在使用onvif进行网络摄像头扫描发现时soap_send___wsdd__Probe返回-1

【问题背景】 在使用MTK+OPENWRT的方案进行开发时,有一个新需求是需要将检测网络摄像头信息,在使用onvif进行摄像头检测时,发现函数soap_send___wsdd__Probe总是返回-1,导致失败。 但是在编译服务器上使用gcc编译链而不使用交叉编译链时,运行正常,并且可以检测到网络摄像…

Leetcode—933. 最近的请求次数【简单】

2024每日刷题&#xff08;128&#xff09; Leetcode—933. 最近的请求次数 实现代码 class RecentCounter { public:RecentCounter() {}int ping(int t) {q.push(t);while(t - 3000 > q.front()) {q.pop();}return q.size();} private:queue<int> q; };/*** Your Re…

揭秘 IEEE/ACM Trans/CCF/SCI,谁才是科研界的王者?

会议之眼 快讯 在学术探索的浩瀚星海中&#xff0c;每一篇论文都像是一颗璀璨的星辰&#xff0c;而那些被顶级期刊或会议收录的论文&#xff0c;则无疑是最耀眼的几颗。 在众多评价标准中&#xff0c;IEEE/ACM Transactions、CCF推荐期刊和会议、SCI分区期刊&#xff0c;它们…