GPIO原理与配置方法.ppt

上传人:max****ui 文档编号:6347997 上传时间:2020-02-23 格式:PPT 页数:29 大小:3.75MB
返回 下载 相关 举报
GPIO原理与配置方法.ppt_第1页
第1页 / 共29页
GPIO原理与配置方法.ppt_第2页
第2页 / 共29页
GPIO原理与配置方法.ppt_第3页
第3页 / 共29页
点击查看更多>>
资源描述
第8讲GPIO原理与配置方法 ALIENTEK 广州星翼电子官方淘宝店 技术支持论坛 原子教你玩STM32 系列视频 技术支持论坛 开源电子网官方微博 正点原子 微博网址 GPIO8种模式3个最大输出速度 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 输入浮空 输入下拉 输入上拉 模拟输入 开漏输出 推挽式输出 推挽式复用功能 开漏复用功能 2MHz 10MHz 50MHz GPIO基本结构 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 GPIO输入输出配置相关寄存器寄存器配置在 STM32中文参考手册V10 的8 2节有详细讲解 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 GPIOx CRL 端口配置低寄存器 GPIOx CRH 端口配置高寄存器 GPIOx IDR 端口输入寄存器 GPIOx ODR 端口输出寄存器 GPIOx BSRR 端口位设置 清除寄存器 GPIOx BRR 端口位清除寄存器 GPIOx LCKR 端口配置锁存寄存器 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 通过跑马灯实例测试寄存器用法 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 跑马灯硬件连接 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 寄存器配置方式改写工程模板代码 intmain void delay init RCC APB2ENR 1APB2ENR 1CRL 所有GPIO都挂载在APB2下面 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 函数分布文件 stm32f10 x gpio c stm32f10 x gpio h GPIO库函数配置方法 GPIO输入输出配置重要函数 voidGPIO Init GPIO TypeDef GPIOx GPIO InitTypeDef GPIO InitStruct uint8 tGPIO ReadInputDataBit GPIO TypeDef GPIOx uint16 tGPIO Pin uint16 tGPIO ReadInputData GPIO TypeDef GPIOx uint8 tGPIO ReadOutputDataBit GPIO TypeDef GPIOx uint16 tGPIO Pin uint16 tGPIO ReadOutputData GPIO TypeDef GPIOx voidGPIO SetBits GPIO TypeDef GPIOx uint16 tGPIO Pin voidGPIO ResetBits GPIO TypeDef GPIOx uint16 tGPIO Pin voidGPIO WriteBit GPIO TypeDef GPIOx uint16 tGPIO Pin BitActionBitVal voidGPIO Write GPIO TypeDef GPIOx uint16 tPortVal voidGPIO PinLockConfig GPIO TypeDef GPIOx uint16 tGPIO Pin 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 函数原型 voidGPIO Init GPIO TypeDef GPIOx GPIO InitTypeDef GPIO InitStruct 作用 初始化GPIO的模式和速度 也就是设置相应的GPIO寄存器的CRH和CRL值 第一个输入参数是GPIO TypeDef类型指针变量 确定是哪个GPIO 取值范围 GPIOA GPIOB GPIOC GPIOD GPIOE GPIOF GPIOG第二个参数是GPIO InitTypeDef类型指针变量 确定GPIOx的对应的引脚以及引脚的模式和输出最大速度 typedefstruct uint16 tGPIO Pin GPIOSpeed TypeDefGPIO Speed GPIOMode TypeDefGPIO Mode GPIO InitTypeDef GPIO Init 函数 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 1 第一个参数GPIO Pin确定初始化那些管脚 取值范围为 GPIO Pin 0 GPIO Pin 15以及GPIO Pin All2 第二个参数GPIO Speed确定初始化的IO的最大输出速度 其取值范围为枚举类型GPIOSpeed TypeDef的枚举值 typedefenum GPIO Speed 10MHz 1 GPIO Speed 2MHz GPIO Speed 50MHz GPIOSpeed TypeDef 3 第三个参数GPIO Mode 确定初始化的IO的输入输出模式 其取值范围为枚举类型GPIOMode TypeDef的枚举值 typedefenum GPIO Mode AIN 0 x0 模拟输入GPIO Mode IN FLOATING 0 x04 浮空输入GPIO Mode IPD 0 x28 下拉输入GPIO Mode IPU 0 x48 上拉输入GPIO Mode Out OD 0 x14 开漏输出GPIO Mode Out PP 0 x10 通用推挽输出GPIO Mode AF OD 0 x1C 复用开漏输出GPIO Mode AF PP 0 x18 复用推挽 GPIOMode TypeDef 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 函数使用范例 GPIO InitTypeDefGPIO InitStructure GPIO InitStructure GPIO Pin GPIO Pin 5 PB 5端口配置GPIO InitStructure GPIO Mode GPIO Mode Out PP 推挽输出GPIO InitStructure GPIO Speed GPIO Speed 50MHz 速度50MHzGPIO Init GPIOB 根据设定参数配置GPIOB 5 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 函数原型 uint8 tGPIO ReadInputDataBit GPIO TypeDef GPIOx uint16 tGPIO Pin 作用 读取对应的GPIO的输入值 也就是读取IDR寄存器的值 使用范例 GPIO ReadInputDataBit GPIOE GPIO Pin 5 读取GPIOE 5管脚的输入值 函数GPIO ReadInputDataBit 函数原型 uint16 tGPIO ReadInputData GPIO TypeDef GPIOx 函数GPIO ReadInputData 和GPIO ReadInputDataBit 作用类似 不同的是GPIO ReadInputData 用来读取一组 GPIOA GPIOG 所有IO口 16个 的输入值 范例 GPIO ReadInputData GPIOE 读取GPIOE所有IO输入值 函数GPIO ReadInputData 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 读取IO口输出值 也就是读取寄存器ODR的值 范例 GPIO ReadOutputDataBit GPIOE GPIO Pin 5 读取GPIOE 5的输出值GPIO ReadOutputData GPIOE 读取GPIOE所有IO输出值 函数GPIO ReadOutputDataBit GPIO ReadOutputData 设置IO输出高或者低 也就是设置寄存器BSRR BRR的值范例 GPIO SetBits GPIOE GPIO Pin 5 GPIOE 5输出高GPIO ResetBits GPIOE GPIO Pin 5 GPIOE 5输出低 函数GPIO SetBits GPIO ResetBits 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 库函数实现实验1跑马灯实例 intmain void GPIO InitTypeDefGPIO InitStructure delay init RCC APB2PeriphClockCmd RCC APB2Periph GPIOB RCC APB2Periph GPIOE ENABLE 使能PB PE端口时钟GPIO InitStructure GPIO Pin GPIO Pin 5 LED0 PB 5端口配置GPIO InitStructure GPIO Mode GPIO Mode Out PP 推挽输出GPIO InitStructure GPIO Speed GPIO Speed 50MHz IO口速度为50MHzGPIO Init GPIOB 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 看看我们 实验1跑马灯 库函数操作的源码 是怎么实现的 STM32位带操作 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 就是把每个比特膨胀为一个32位的字 当访问这些字的时候就达到了访问比特的目的 比如说BSRR寄存器有32个位 那么可以映射到32个地址上 我们去访问 读 改 写 这32个地址就达到访问32个比特的目的 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 在CM3支持的位带中 有两个区中实现了位带 其中一个是SRAM区的最低1MB范围 0 x20000000 0 x200FFFFF SRAM区中的最低1MB 第二个则是片内外设区的最低1MB范围 0 x40000000 0 x400FFFFF 片上外设区中的最低1MB 位带区 支持位带操作的地址区位带别名 对别名地址的访问最终作用到位带区的访问上 注意 这中间有一个地址映射过程 映射关系式 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 defineBITBAND addr bitnum addr 0 xF0000000 0 x2000000 addr 0 xFFFFF 5 bitnum 2 defineMEM ADDR addr volatileunsignedlong addr defineBIT ADDR addr bitnum MEM ADDR BITBAND addr bitnum IO口地址映射 defineGPIOA ODR Addr GPIOA BASE 12 0 x4001080C defineGPIOB ODR Addr GPIOB BASE 12 0 x40010C0C defineGPIOF ODR Addr GPIOF BASE 12 0 x40011A0C defineGPIOG ODR Addr GPIOG BASE 12 0 x40011E0C defineGPIOA IDR Addr GPIOA BASE 8 0 x40010808 defineGPIOB IDR Addr GPIOB BASE 8 0 x40010C08 defineGPIOG IDR Addr GPIOG BASE 8 0 x40011E08 IO口操作 只对单一的IO口 确保n的值小于16 definePAout n BIT ADDR GPIOA ODR Addr n 输出 definePAin n BIT ADDR GPIOA IDR Addr n 输入 definePBout n BIT ADDR GPIOB ODR Addr n 输出 definePBin n BIT ADDR GPIOB IDR Addr n 输入 definePFout n BIT ADDR GPIOF ODR Addr n 输出 definePFin n BIT ADDR GPIOF IDR Addr n 输入 definePGout n BIT ADDR GPIOG ODR Addr n 输出 definePGin n BIT ADDR GPIOG IDR Addr n 输入 sys h里面对GPIO输入输出部分功能实现了位带操作 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 实验2蜂鸣器实例硬件连接图 BEEP管脚输出0 三极管不导通 蜂鸣器关闭BEEP管脚输出1 三极管导通 蜂鸣器鸣叫 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 库函数实现实验2蜂鸣器实例 intmain void GPIO InitTypeDefGPIO InitStructure delay init RCC APB2PeriphClockCmd RCC APB2Periph GPIOB ENABLE 使能GPIOB端口时钟GPIO InitStructure GPIO Pin GPIO Pin 8 BEEP PB 8端口配置GPIO InitStructure GPIO Mode GPIO Mode Out PP 推挽输出GPIO InitStructure GPIO Speed GPIO Speed 50MHz 速度为50MHzGPIO Init GPIOB 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 实验3按键输入实例 ifndef KEY H define KEY H include sys h defineKEY0GPIO ReadInputDataBit GPIOE GPIO Pin 4 读取按键0 defineKEY1GPIO ReadInputDataBit GPIOE GPIO Pin 3 读取按键1 defineKEY2GPIO ReadInputDataBit GPIOE GPIO Pin 2 读取按键2 defineKEY3GPIO ReadInputDataBit GPIOA GPIO Pin 0 读取按键3 WK UP defineKEY UP4 defineKEY LEFT3 defineKEY DOWN2 defineKEY RIGHT1voidKEY Init void IO初始化u8KEY Scan u8 按键扫描函数 endif key h 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 voidKEY Init void IO初始化 GPIO InitTypeDefGPIO InitStructure 初始化KEY0 GPIOA 13 KEY1 GPIOA 15上拉输入RCC APB2PeriphClockCmd RCC APB2Periph GPIOA RCC APB2Periph GPIOE ENABLE 使能时钟GPIO InitStructure GPIO Pin GPIO Pin 2 GPIO Pin 3 GPIO Pin 4 PE2 4GPIO InitStructure GPIO Mode GPIO Mode IPU 设置成上拉输入GPIO Init GPIOE 无按键按下 key c 广州星翼电子官方淘宝店 技术支持论坛 ALIENTEK 原子教你玩STM32 系列视频 intmain void u8t delay init 延时函数初始化LED Init LED端口初始化KEY Init 初始化与按键连接的硬件接口BEEP Init 初始化蜂鸣器端口LED0 0 先点亮红灯while 1 t KEY Scan 0 得到键值if t switch t caseKEY UP 控制蜂鸣器BEEP BEEP break caseKEY LEFT 控制LED0翻转LED0 LED0 break caseKEY DOWN 控制LED1翻转LED1 LED1 break caseKEY RIGHT 同时控制LED0 LED1翻转LED0 LED0 LED1 LED1 break elsedelay ms 10 main c
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!