STM32L15x 系列中基本步骤是和STM32F10x相同的

一 配置GPIO

初始化GPIO时我们需要催一下内容进行配置(以下步骤没有必然顺序)

1 创建GPIO结构

GPIO_InitTypeDef GPIO_InitStructure;

2 使能需要端口时钟

RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC| RCC_AHBPeriph_GPIOD| RCC_AHBPeriph_GPIOE| RCC_AHBPeriph_GPIOH, ENABLE );

3 配置 GPIO_InitStructure  结构体成员(不同之处在这里)

例:

GPIO_InitStructure.GPIO_Pin = LD_GREEN_GPIO_PIN | LD_BLUE_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init( LD_GPIO_PORT, &GPIO_InitStructure );

4

GPIO_Reset( LD_GPIO_PORT, LD_GREEN_GPIO_PIN );
GPIO_Reset( LD_GPIO_PORT, LD_BLUE_GPIO_PIN );

二 分析

首先看一下STM32L15x  的 GPIO_InitTypeDef  这个结构体

typedef struct

{

uint32_t GPIO_Pin; //对应管脚  GPIOx_Pinx0~15

GPIOMode_TypeDef GPIO_Mode; //所选管脚的模式:输入、输出、悬空、模拟

GPIOSpeed_TypeDef GPIO_Speed; //所选管脚的响应速率 400K/ 10M /20M/ 40M

GPIOOType_TypeDef GPIO_OType; //所选管脚的开漏、上/下拉

GPIOPuPd_TypeDef GPIO_PuPd; //所选管脚是否上/下拉

}GPIO_InitTypeDef;

每个结构体成员又是以枚举形式结构体出现。

typedef enum

{

GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */

GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */

GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */

GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */

}GPIOMode_TypeDef;

#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT)  ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))

typedef enum

{

GPIO_Speed_400KHz = 0x00, /*!< Very Low Speed */

GPIO_Speed_2MHz   = 0x01, /*!< Low Speed */

GPIO_Speed_10MHz  = 0x02, /*!< Medium Speed */

GPIO_Speed_40MHz  = 0x03  /*!< High Speed */

}GPIOSpeed_TypeDef;

#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Speed_400KHz) || ((SPEED) == GPIO_Speed_2MHz)  ((SPEED) == GPIO_Speed_10MHz)||  ((SPEED) == GPIO_Speed_40MHz))

typedef enum

{ GPIO_OType_PP = 0x00,

GPIO_OType_OD = 0x01

}GPIOOType_TypeDef;

//推挽输出和开漏输出在这儿配置

#define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))

typedef enum

{ GPIO_PuPd_NOPULL = 0x00,

GPIO_PuPd_UP     = 0x01,

GPIO_PuPd_DOWN   = 0x02

}GPIOPuPd_TypeDef;

#define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) ((PUPD) == GPIO_PuPd_DOWN))

而 stm32f10x  就没有分那么多层次直接定义每种输入输出模式对应的值

typedef enum
{ GPIO_Mode_AIN = 0x0,
  GPIO_Mode_IN_FLOATING = 0x04,
  GPIO_Mode_IPD = 0x28,
  GPIO_Mode_IPU = 0x48,
  GPIO_Mode_Out_OD = 0x14,
  GPIO_Mode_Out_PP = 0x10,
  GPIO_Mode_AF_OD = 0x1C,
  GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;

这是因为 STM32L15x 在硬件的输出上也加上了上拉下拉的可选配置。这样做是为了使用更灵活。使用者可在需要上拉输出的时候直接配置GPIO而不必在外围电路增加元器件。

转载于:https://www.cnblogs.com/xiumusheng/p/10538700.html

STM32L1X系列GPIO运用相关推荐

  1. STM32F103系列GPIO的一些基本概念和知识

    前言:本笔记为百问网7天物联网智能家居训练营学习总结 GPIO(General-Purpose IO ports,通用输入/输出接口),用于感知外界信号(输入模式)和控制外部设 备(输出模式),如图 ...

  2. 4、PIC32系列 GPIO介绍

    PIC32系列 GPIO介绍 1.PIC32参考资源 2.GPIO寄存器介绍 3.使用寄存器配置IO口输出LED闪烁 4.库函数封装定义 5.库函数 6.实验验证 1.PIC32参考资源 PIC32系 ...

  3. STM32F103系列GPIO重映射一览表

    以下是STM32F103系列GPIO重映射一览表,参考一位博友的文章,大家学习!

  4. STM32F10x系列GPIO寄存器BRR、BSRR、ODR、IDR的使用理解

    引脚的高.低电平控制,有3种方法(3个寄存器) 分别是通过GPIO的 3个 管脚控制寄存器: ODR寄存器,   控制管脚的高.低电平,低16位有效,写1 高电平, 写0 低电平; BSRR寄存器, ...

  5. stm32f103系列GPIO

    GPIO是通用输入/输出端口的简称,是STM32可控制的引脚.GPIO的引脚与外部硬件设备连接,可实现与外部通讯.控制外部硬件或者采集外部硬件数据的功能. 1,GPIO的输入模式(四种) 1.输入浮空 ...

  6. STM32入门实践系列——GPIO输入输出(模拟摩斯密码)

    任务要求 通过GPIO的输入输出功能或独立按键输出一串摩斯密码(数字0~7之间的莫斯密码),输入口接收,并翻译出来,对应8盏 led 的亮灭. 对应的摩斯密码与数字关系如下: 实现思路: 通过GPIO ...

  7. STM32F系列GPIO重映射IO一览表

  8. ZYNQ7000系列入门之GPIO点灯

    文章目录 ZYNQ AC7020 一.简介 二.MIO和EMIO/AXI_GPIO 1.MIO 2.EMIO 3.AXI_GPIO 三.开发板IO口 四.裸机开发点灯 1.代码部分 2.测试 五.li ...

  9. RK系列主板GPIO计算方式

    RK(瑞芯微)系列主板GPIO计算方式 记录一下rk系列gpio num计算方式,测试芯片,3288,3399,3308均正确 查看GOPI 引脚 如图是3308gpio部分定义,已linux系统为例 ...

最新文章

  1. 智源成立面向可持续发展的人工智能智库并发布公益研究计划
  2. 让SpringMVC Restful API优雅地支持多版本
  3. DayDayUp:那些年-程序猿的爱情故事
  4. ASP.NET中JSON的序列化和反序列化
  5. NHibernate+MySql (erro 解决方法)
  6. 非文学翻译理论与实践_北外“欧洲非通用语文学翻译与研究中心”正式成立
  7. java中如何使用add方法_使用Java中的Calendar.add()方法将秒添加到当前日期
  8. oracle外关联更新操作,记要oracle 关联更新的例子
  9. linux内核中TCP发送的实现
  10. IBM AppScan 安全漏洞问题修复(.net)
  11. HttpClient短信接口
  12. fckeditor for java_基于java使用FCKeditor
  13. Acer 4750 安装黑苹果_黑苹果安装 你要知道的那些坑
  14. c语言graphics下载,C语言_graphics.h
  15. mysql informix_INFORMIX数据库函数
  16. Long与Integer的转换
  17. 计算机专硕日语考研学校排名,日语考研院校排名(日语专硕学校排名)
  18. python填写问卷星_Python填写问卷星
  19. AS608光学指纹模块
  20. 阿姆达尔定律(Amdahl’s Law)

热门文章

  1. P7 计算机的性能指标
  2. 【CyberSecurityLearning 59】OS命令注入
  3. MyBatis学习总结一
  4. 概述---《TCP/IP协议》卷一 练习题
  5. python简单学(一)基础语法
  6. 操作系统(七)进程的概念、组成、特征
  7. java 控制 android_Java For Android - 流程控制
  8. 实现AIDL接口的Binder连接池
  9. 移动APP漏洞自动化检测平台建设
  10. 记一次httpclient调用失败