当按键外接电源,按下按键IO输出为高电平时,此时需要设置未按下时为低电平,所以需要配置成下拉输入

当按键外接电源,按下按键IO输出为低电平时,此时需要设置未按下时为高电平,所以需要配置成上拉输入


推挽输出既能输出高电平也能输出低电平。

什么叫端口复用?
IO口既可以用作通用输入输出高低电平,也可以通过配置相应引脚作为其他功能使用,
如00时通用IO口,01时定时器通道输出,11时串口通讯等。
作用:最大限度利用端口资源。

什么是端口重映射?
就是把某些功能引脚映射到其他引脚。
如PA9,PA10的串口功能可以映射到PB6,PB7上面,即可以通过配置引脚使PB6,PB7具有串口功能。
作用:布线方便

每组GPIOx有16个IO口PA0-PA15,配置一个IO口需要4位,则每组需要64位,则需要2个32位寄存器来配置。

如端口配置低寄存器GPIOx_CRL和高寄存器GPIOx_CRH,每个寄存器有32个位,其中每四个位控制一个IO口,
CRL控制0-7,CRH控制8-15的IO口。下面一个格代表两位,共32位。

所有IO口都可以作为中断输入。

用固件库点亮LED的过程(以PB0为例)
1.定义一个GPIO结构体(GPIO_InitTypeDef)类型的变量
GPIO_InitTypeDef GPIO_InitStructure;

2.打开GPIO的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

3.将GPIO结构体变量的成员进行赋值:端口、模式、翻转速度(定义的内容位于GPIO.h文件)
GPIOB_Pin0.GPIO_Pin = GPIO_Pin_0;
GPIOB_Pin0.GPIO_Mode = GPIO_Mode_Out_PP;
GPIOB_Pin0.GPIO_Speed = GPIO_Speed_50MHz;

4.GPIO初始化
GPIO_Init(GPIOB, &GPIO_InitStructure);

5.将相应的引脚置高、置低
GPIO_ResetBits(GPIOB, GPIO_Pin_0);

        GPIO_SetBits(GPIOB, GPIO_Pin_0);

关于GPIO的内部结构及编程步骤相关推荐

  1. STM32编程(一)STM32 GPIO配置的4大步骤

    GPIO配置的4大步骤 前言:只要初始化了GPIO完成后 在主函数中调用GPIO_SetBits(xxxx),GPIO_ResetBits(xxxx)就可以控制它的引脚了. 1  定义GPIO引脚的结 ...

  2. 【libevent】libevent库学习总结(二)——编程步骤

    一.libevent编程步骤 0.分配并初始化event_base,两种方法 0.1 event_base_new:线程安全,代替event_init: 0.2 event_init:线程不安全,不推 ...

  3. 【示例】Lucene查询索引库编程步骤

    Lucene查询索引库编程步骤

  4. 【示例】Lucene创建索引库编程步骤

    [示例]Lucene创建索引库编程步骤

  5. vs2013 matlab 教程,Matlab 2016a和VS2013混合Dll编程步骤总结

    Matlab 2016a和VS2013混合Dll编程步骤 1. 从Matlab导出.m文件为Dll文件: Step1:将Matlab工作路径转为目标.m文件所在文件夹,在控制栏输入"mex ...

  6. 三丰三坐标编程基本步骤_ABB 机器人 | 输送链跟踪配置和编程步骤

    ABB&ROBOT 使用输送链跟踪功能的配置和编程步骤 输送链跟踪硬件 安装DSQC377A(B)模块 安装编码器 安装触发开关 安装机器人校准探针?? 安装输送线上的校准针?? 连接编码器线 ...

  7. 【嵌入式07】寄存器映射原理详解,GPIO端口的初始化设置步骤

    本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤. 一.STM32F103系列芯片的地址映射和寄存器映射原理 1.什么是寄存器? 2.地址映射和寄存器映射 ...

  8. 糖儿飞教你学C++ Socket网络编程——5.套接字编程步骤与函数

    TCP是一个面向连接的传输层协议,提供高可靠性的字节流传输服务,主要用于一次传输要交换大量报文的情形.为了维护传输的可靠性,TCP增加了许多开销:例如确认.流量控制.计时器以及连接管理等.TCP协议的 ...

  9. 库卡机器人编程权限_KUKA库卡机器人实操技巧:信息编程(中)-信息编程步骤(除对话信息)...

    Hi 大家好,你们的 小KU老师又来了,上堂课给大家介绍了KUKA库卡机器人控制柜KR C4 Smartpad 显示的图标所代表的信息类型!咦?我咋听到有些小伙伴说忘记讲课内容啦,别担心,可戳下方补课 ...

  10. 凌波微步Flink——Flink的技术逻辑与编程步骤剖析

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/95459606 本文出自[我是干勾鱼的博客] Ingredients: Java: ...

最新文章

  1. 90 后 CTO 创业 6 年,做了一件改变互联网的“小事”
  2. 华一银行开发安全内部培训圆满结束
  3. Mysql安装注意问题
  4. 求二叉树指定结点到根的路径c语言,二叉树根节点到叶子结点和为指定值的路径...
  5. vue脚手架 全局变量可以是变量吗_Vue.js2 全局变量的设置方法
  6. 三个线程按顺序输出数字
  7. 面试题——Java虚拟机
  8. java接口自动化测试的搭建_java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)...
  9. 创新元旦新年PSD分层海报,新气象开启!
  10. 框架下载_最新安卓XDA框架插件下载仓库
  11. codeforces 664B B. Rebus(乱搞题)
  12. 数据科学包10-pandas高级内容之时间序列
  13. 自动化运维工具SaltStack
  14. python 导入excel至oracle,Python读取Excel数据并将其导入Oracle数据库,导入到
  15. cad2014点击工具栏闪退_cad2012闪退,点工具栏闪退但用快捷键画图不闪退
  16. 超声波传感器for蓝桥杯
  17. 2021年,shopee虾皮一件代发模式的优势和背后风险是什么?
  18. 解决Windows XP 系统下,用户登录一直循环提示激活
  19. php蓝牙连接不上,Mac蓝牙不可用怎么办?苹果电脑Mac蓝牙连不上i
  20. linux 命令 ps的作用,Linux之ps命令

热门文章

  1. 【qstock量化】数据篇之宏观指标和财经新闻文本
  2. 操作系统--6设备管理
  3. 计算机网络图标在哪里照,网络设备图标-电脑上的网络图标怎么显示
  4. 飞机有“站票”?英乘客机票座位不存在 无奈坐地板
  5. 黑白双煞拆装箱 -- 八大基本类型及其封装类
  6. 最新多目标跟踪算法综述-2020年08月23日
  7. 哈夫曼树的构造与哈夫曼编码
  8. FileNotFoundError: [Errno 2] No such file or directory: ‘./train/hazy/hazy‘
  9. 服务器查看ilo信息,服务器ilo默认地址
  10. SQL Server 2008 Service Pack 1 - CTP 发布