第8讲GPIO原理与配置方法

上传人:宝路 文档编号:48601479 上传时间:2018-07-17 格式:PPT 页数:29 大小:3.56MB
返回 下载 相关 举报
第8讲GPIO原理与配置方法_第1页
第1页 / 共29页
第8讲GPIO原理与配置方法_第2页
第2页 / 共29页
第8讲GPIO原理与配置方法_第3页
第3页 / 共29页
第8讲GPIO原理与配置方法_第4页
第4页 / 共29页
第8讲GPIO原理与配置方法_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《第8讲GPIO原理与配置方法》由会员分享,可在线阅读,更多相关《第8讲GPIO原理与配置方法(29页珍藏版)》请在金锄头文库上搜索。

1、第 8 讲 GPIO原理与配置方法STM32 GPIO相关寄存器1STM32 GPIO固件库函数配置方法2实例讲解:跑马灯,按键,蜂鸣器3广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频技术支持论坛: 开源电子网 官方微博: “正点原子” 微博网址 http:/ 淘宝店铺: http:/ GPIO 8种模式3个最大输出速度广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频-输入浮空-输入下拉-输入上拉-模拟输入-开漏输出-推挽式输出 -推挽式复用功能-开漏复用功能2MHz10MHz50MHzGPIO基本结构广州星翼电子 官方淘宝

2、店:http:/ 技术支持论坛:原子教你玩STM32系列视频GPIO 输入输出配置相关寄存器l 寄存器配置在STM32中文参考手册V10的8.2节有详细讲解广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频 GPIOx_CRL :端口配置低寄存器 GPIOx_CRH:端口配置高寄存器 GPIOx_IDR:端口输入寄存器 GPIOx_ODR:端口输出寄存器 GPIOx_BSRR:端口位设置/清除寄存器 GPIOx_BRR :端口位清除寄存器 GPIOx_LCKR:端口配置锁存寄存器广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频广

3、州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频通过跑马灯实例测试寄存器用法! !广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系

4、列视频跑马灯硬件连接广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频寄存器配置方式改写工程模板代码:int main(void)delay_init();RCCAPB2ENR|=1APB2ENR|=1CRL GPIOBCRL|=0X00300000;/PB.5 推挽输出 GPIOBODR|=1CRLGPIOECRL|=0X00300000;/PE.5推挽输出GPIOEODR|=1ODR|=1ODR /推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /IO口速度为50MHzGPIO_Init(GPIOB

5、, /根据设定参数初始化GPIOB.5GPIO_SetBits(GPIOB,GPIO_Pin_5);/PB.5 输出高GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; /LED1PE.5 端口配置, 推挽输出GPIO_Init(GPIOE, /推挽输出 ,IO口速度为50MHzGPIO_SetBits(GPIOE,GPIO_Pin_5); /PE.5 输出高 while(1) GPIO_ResetBits(GPIOB,GPIO_Pin_5); /GPIOB.5输出低GPIO_SetBits(GPIOE,GPIO_Pin_5); /GPIOE.5输出高delay

6、_ms(500);GPIO_SetBits(GPIOB,GPIO_Pin_5); /GPIOB.5输出高GPIO_ResetBits(GPIOE,GPIO_Pin_5); /GPIOE.5输出低delay_ms(500);广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频看看我们“实验1跑马灯-库函数操作 的源码”是怎么实现的?STM32位带操作广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频l 就是把每个比特膨胀为一个32位的字,当访问这些字的时候就达到了访问 比特的目的,比如说BSRR寄存器有32个位,那么可以映射到32个地

7、址上, 我们去访问(读改写)这32个地址就达到访问32个比特的目的。广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频l 在 CM3 支持的位带中,有两个区中实现了位带。其中一个是 SRAM 区的最低 1MB 范围,0x20000000 0x200FFFFF(SRAM 区中的最低 1MB);第二个则是片内外设区的最低 1MB范围, 0x40000000 0x400FFFFF(片上外设区中的最低 1MB)。l位带区:支持位带操作的地址区位带别名:对别名地址的访问最终作用到位带区的访问上(注意:这中间有一个地址映射过程) l 映射关系式:广州星翼电子 官方淘宝店:h

8、ttp:/ 技术支持论坛:原子教你玩STM32系列视频#define BITBAND(addr, bitnum) (addr /推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /速度为50MHzGPIO_Init(GPIOB, /根据参数初始化GPIOB.8GPIO_ResetBits(GPIOB,GPIO_Pin_8);/输出0,关闭蜂鸣器输出while(1) /GPIO_ResetBits(GPIOB,GPIO_Pin_8); /GPIOB.8输出低BEEP=0;delay_ms(300);BEEP=1; /GPIO_SetBit

9、s(GPIOB,GPIO_Pin_8); /GPIOB.8输出高delay_ms(300);广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频实验3按键输入实例:#ifndef _KEY_H #define _KEY_H #include “sys.h“#define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)/读取按键0 #define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)/读取按键1 #define KEY2 GPIO_ReadInputDataBit(GPIO

10、E,GPIO_Pin_2)/读取按键2 #define KEY3 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)/读取按键3(WK_UP) #define KEY_UP 4 #define KEY_LEFT3 #define KEY_DOWN2 #define KEY_RIGHT1void KEY_Init(void);/IO初始化 u8 KEY_Scan(u8); /按键扫描函数#endifkey.h广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频void KEY_Init(void) /IO初始化 GPIO_InitType

11、Def GPIO_InitStructure;/初始化KEY0GPIOA.13,KEY1GPIOA.15 上拉输入RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);/使能时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;/PE24GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /设置成上拉输入GPIO_Init(GPIOE, /初始化GPIOE2,3,4GPIO_InitStr

12、ucture.GPIO_Pin = GPIO_Pin_0;初始化 WK_UPGPIOA.0 下拉输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; /PA0设置成输入,默认下拉 GPIO_Init(GPIOA, /初始化GPIOA.0 u8 KEY_Scan(u8 mode) static u8 key_up=1;/按键按松开标志 if(mode)key_up=1; /支持连按 if(key_up/去抖动 key_up=0; if(KEY0=0)return KEY_RIGHT; else if(KEY1=0)return KEY_DOWN; els

13、e if(KEY2=0)return KEY_LEFT; else if(KEY3=1)return KEY_UP; else if(KEY0=1 return 0;/ 无按键按下 key.c广州星翼电子 官方淘宝店:http:/ 技术支持论坛:原子教你玩STM32系列视频int main(void)u8 t;delay_init(); /延时函数初始化 LED_Init(); /LED端口初始化KEY_Init(); /初始化与按键连接的硬件接口BEEP_Init(); /初始化蜂鸣器端口LED0=0; /先点亮红灯while(1) t=KEY_Scan(0);/得到键值if(t) switch(t) case

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号