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到 ... 
随机推荐
- Treap树 笔记
			预备知识:二叉查找树.堆(heap).平衡二叉树(AVL)的基本操作(左旋右旋) 定义: Treap.平衡二叉树.Tree+Heap.树堆. 每个结点两个键值(key.priority). 性质1. ... 
- 【BZOJ1568】[JSOI2008]Blue Mary开公司(李超线段树)
			[BZOJ1568][JSOI2008]Blue Mary开公司(李超线段树) 题面 BZOJ 洛谷 题解 是模板题啊. #include<iostream> #include<cs ... 
- BZOJ5262(容斥)
			题目描述 听着自己美妙的曲子,小Z进入了梦乡.在梦中,小Z仿佛又回到了自己纵横考场的年代.在梦中,小Z参加了一场 考试,这场考试一共有n道题,每道题的最终得分都是一个大于等于0的整数.然而醒来后,小Z ... 
- 如何 通过 userAgent 区别微信小程序
			微信内置浏览器: 微信小程序: 有micromessenger是微信内置浏览器,有micromessenger和miniprogram的是微信小程序. (ios不适用) if(navigator.u ... 
- 洛谷P1072 Hankson的趣味题
			这是个NOIP原题... 题意: 给定 a b c d 求 gcd(a, x) = b && lcm(c, x) = d 的x的个数. 可以发现一个朴素算法是从b到d枚举,期望得分50 ... 
- 认识Jmeter工具
			1.Apache jmeter 是一个100%的纯java桌面应用,是Apache组织开发的基于java的压力测试工具.它最初被设计用于Web应用测试但后来扩展到其他测试领域,可以用于对静态的和动态的 ... 
- pytest 6 生成html报告
			前言:pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告.兼容Python 2.7,3.6 1.github上源码地址[https://github.com/pytest-d ... 
- codesmith  连接mysql
			下载地址是http://dev.mysql.com/downloads/mirror.php?id=403020 请先注册登录后才能下载mysql-connector-net-6.3.7.msi这个文 ... 
- HTML学习笔记Day2
			一.部分表单元素的使用 1.表单的作用:用来收集用户信息 2.表单元素 (1)表单控件: 单行文本框:<input type="text" value="默认值& ... 
- maomao的现在与未来
			今晚开始,maomao决定要成为一个和以前不一样的人了. 自从高一开始竞赛生涯以来,我的竞赛就一直处于不是很好,也不是很差的水平,就像我初中一年级到二年级一直处于的状态一样.一直以来,我从来没有对自己 ... 
