STM32学习笔记:【003】GPIO
版本:STM32F429 Hal库v1.10
在STM32中,最常用到的功能莫过于GPIO(General Purpose Input Output 、通用输入/输出)了,在STM32中,除了除去ADC以外的复用功能,剩下的几乎就是GPIO了。
下面给出GPIO的基本使用步骤:
初始化
1.声明一个GPIO属性结构体,设置各成员属性
这个结构体的属性是这样的:
typedef struct { uint32_t Pin; /*指定的引脚号,右值表达式可以是GPIO_PIN_0到~GPIO_PIN_15任意相或 */ uint32_t Mode; /* 模式 GPIO_MODE_INPUT 输入模式 GPIO_MODE_OUTPUT_PP 推挽输出模式(输出较大电流) GPIO_MODE_OUTPUT_OD 开漏输出模式(一般外接上拉电阻) GPIO_MODE_AF_PP 复用推挽输出模式 GPIO_MODE_OUTPUT_OD 复用开漏输出模式 GPIO_MODE_ANALOG 复用模拟输入输出模式(ADC/DAC专用) */
uint32_t Pull; /* 上/下拉模式 上拉电阻是指当pin接到VCC(高电平)时所接的电阻即为Pull up 电阻, 反之亦然,pin接地时所接的电阻即pull down电阻 GPIO_NOPULL 无 GPIO_PULLUP 上拉 GPIO_PULLDOWN 下拉 */
uint32_t Speed; /* IO口速率(I/O口驱动电路的速度) 当STM32的GPIO端口设置为输出模式时,有三种速度可以选择:2MHz、10MHz和50MHz,用来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。 高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。 STM32F429的端口输出速率为括号内容
GPIO_SPEED_LOW; (2) 2MHz注意: GPIO_SPEED_MEDIUM; (25) 12.5MHz ~ 50MHz GPIO_SPEED_FAST; (50) 25MHz ~ 100 MHz GPIO_SPEED_HIGH; (100) 50MHz ~ 200MHz
*/ uint32_t Alternate; /* 复用功能,本节省略不讲 */ }GPIO_InitTypeDef;
2.使能GPIOx对应的时钟(如果没有使能将会导致配置无效)
__HAL_RCC_GPIOB_CLK_ENABLE(void); //开启GPIOB时钟
3.调用void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) 函数
初始化例程
void LED_Init(void) { // 初始化函数 GPIO_InitTypeDef GPIO_Initure; __HAL_RCC_GPIOB_CLK_ENABLE(); //开启GPIOB时钟 GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; //PB1,0 GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出 GPIO_Initure.Pull=GPIO_PULLUP; //上拉 GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速 HAL_GPIO_Init(GPIOB,&GPIO_Initure); }
IO口的读写
读:
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); Pxin(GPIO_Pin); // x 可以是ABCD等端口
写:
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); Pxout(GPIO_Pin); // x 可以是ABCD等端口 void HAL_GPIO_TogglePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);
读写例程
#include "stm32f4xx.h" #define LED0 PAout(0)
,,,); ); ; //LED0亮 delay_ms(); LED0=; //LED0灭 delay_ms(); } }
STM32学习笔记:【003】GPIO的更多相关文章
- stm32学习笔记之GPIO功能框图分析
GPIO 是通用输入输出端口的简称,简单来说就是STM32 可控制的引脚,STM32 芯片的GPIO 引脚与外部设备连接起来,从而实现与外部通讯.控制以及数据采集的功能.STM32 芯片的GPIO被分 ...
- STM32学习笔记——OLED屏
STM32学习笔记--OLED屏 OLED屏的特点: 1. 模块有单色和双色可选,单色为纯蓝色,双色为黄蓝双色(本人选用双色): 2. 显示尺寸为0.96寸 3. 分辨率为128*64 4. ...
- STM32学习笔记——点亮LED
STM32学习笔记——点亮LED 本人学习STM32是直接通过操作stm32的寄存器,使用的开发板是野火ISO-V2版本: 先简单的介绍一下stm32的GPIO: stm32的GPIO有多种模式: 1 ...
- stm32学习笔记——外部中断的使用
stm32学习笔记——外部中断的使用 基本概念 stm32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组为一个单位的,同组间的外部中断同一时间只能使用一个.比如说,PA0,PB0 ...
- STM32学习笔记(四)——串口控制LED(中断方式)
目录: 一.时钟使能,包括GPIO的时钟和串口的时钟使能 二.设置引脚复用映射 三.GPIO的初始化配置,注意要设置为复用模式 四.串口参数初始化配置 五.中断分组和中断优先级配置 六.设置串口中断类 ...
- stm32学习笔记----双串口同时打开时的printf()问题
stm32学习笔记----双串口同时打开时的printf()问题 最近因为要使用串口2外接PN532芯片实现通信,另一方面,要使用串口1来将一些提示信息输出到上位机,于是重定义了printf(),使其 ...
- STM32学习笔记-NVIC中断知识点
STM32学习笔记-NVIC中断知识点总结 中断优先级设置步骤 1. 系统运行后先设置中断优先级分组 函数:void NVIC_PriorityGroupConfig(uint32_tNVIC_Pri ...
- STM32学习笔记(三) STM32的GPIO的深入学习
STM32的开发学习主要涉及软硬件两个部分的实现,包含众多外设和总线的理解配置.STM32的整个学习曲线并不陡峭,但入门却相当困难,因此在学习之初,多动手实验和测试相当重要,GPIO作为整个STM32 ...
- STM32学习笔记之一(初窥STM32)
怎么做好学习笔记? 答:自我感知-->学习知识-->归纳总结-->自我升华(真正属于自己的知识是,抛开书本,运用时,你还能记得的思想) 自我感知--看到知识概念,先自我感觉那应该是个 ...
- STM32学习笔记(一)——点亮一个LED
引言 最近报名了2017全国大学生电子设计竞赛,我们学校是第一次参加这个比赛,由于8/9月份就要比赛了,所以现在准备是比较晚的了,指导老师说只能做控制类的题目了,让我们学习一下STM32单片机,51到 ...
随机推荐
- 51Nod1778 小Q的集合 【组合数】【Lucas定理】
题目分析: 题解好高深...... 我给一个辣鸡做法算了,题解真的看不懂. 注意到方差恒为$0$,那么其实就是要我们求$\sum_{i=0}^{n}\binom{n}{i}(i^k-(n-i)^k)^ ...
- BZOJ 2521: [Shoi2010]最小生成树(最小割)
题意 对于某一条无向图中的指定边 \((a, b)\) , 求出至少需要多少次操作.可以保证 \((a, b)\) 边在这个无向图的最小生成树中. 一次操作指: 先选择一条图中的边 \((u, v)\ ...
- WC2019 划水记
写在前面: 本篇是擅长咕咕咕的\(\text{BLUESKY007}\)同学难得不咕写的游记,将会记录\(WC2019(2019.1.24(Day\ 0)\sim2019.1.30(Day\ 6))\ ...
- AWS免费EC2
终于弄到这个EC2了.回想下过程大概如下 1.注册账号 https://amazonaws-china.com/cn/free/ 可以这地址点击"创建免费账户" 2.注册填写信息, ...
- bzoj3702/bzoj2212 二叉树 (线段树合并)
用线段树记每个子树中包含的数,然后合并的时候算出来逆序对的数量(合并a,b时,就是size[ch[a][1]]*size[ch[b][0]]),来决定这个子树要不要翻转 #include<bit ...
- A.01.03-模块的输入—模拟量输入
模拟量输入在使用过程中也十分常见,它在很多场合都应用到,但其用法又各有不同,下面列举一些常见的类型进行说明. 第一种为采用模拟口读取离散量的状态,如某开关可能有高.低.悬空三种状态均需能准确判断,这种 ...
- Java Number & Math 类
// java.lang.Math 常用 // xxxValue() 方法用于将 Number 对象转换为 xxx 数据类型的值并返回. System.out.println(((Integer) 5 ...
- Windows下VMware14黑屏
解决方法 以管理员身份运行命令提示符,执行netsh winsock reset
- A1118. Birds in Forest
Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...
- [Splay][学习笔记]
胡扯 因为先学习的treap,而splay与treap中有许多共性,所以会有很多地方不会讲的很细致.关于treap和平衡树可以参考这篇博客 关于splay splay,又叫伸展树,是一种二叉排序树,它 ...