【CH32】 |
您所在的位置:网站首页 › 使用库函数实现操作gpio口 › 【CH32】 |
系列文章目录 【CH32】| 00——开发环境搭建 【CH32】| 01——新建工程 | 下载 | 运行 |调试 【CH32】| 02——常用外设 | GPIO 失败了也挺可爱,成功了就超帅。 文章目录 前言1. GPIO简介2. IO口的内部结构框图保护二极管上下拉电阻施密特触发器两个MOS管输出寄存器和输入寄存器 3. GPIO的几种模式3.1 输入模拟输入浮空输入上拉输入下拉输入 3.2 输出推挽输出开漏输出复用推挽/开漏输出 4. GPIO模式如何选择5. 引脚的复用功能6. 引脚产生的中断 | 外部中断7. 引脚的锁定机制8. GPIO相关寄存器配置寄存器低位 GPIOx_CFGLR端口输入寄存器 GPIOx_INDR端口输出寄存器 GPIOx_OURDR端口复位/置位寄存器 GPIOx_BSHR端口复位寄存器 GPIOx_BCR配置锁存寄存器 GPIOx_LCKR 9. 实践(代码篇)9.1 点灯前看查原理图 LED灯的电路 及控制引脚 9.2 寄存器操作——点灯9.3 库函数操作——点灯 前言白嫖了开发板那不得做些事情。现在好多刚入门单片机的都是从库函数入手的 大多教程也是库函数的 这样导致对一些底层怎么实现的不是很清楚。我在学习的时候 老师强烈要求寄存器 然后在学完stm32后 用一些其他单片机也是很容易上手的。所以我就通过带大家看寄存器以及库函数的底层实现深入了解各个外设。 1. GPIO简介GPIO就是引脚,我们在使用引脚时根据作用 应配置了其模式再去使用。通过看它的参考手册(最好的资料) 了解到GPIO可以配置为很多模式。和stm32一模一样。毕竟抄的 这点可以理解 这样我们再用这个芯片可以无缝上手。当然它也有些自已的特点啦。 2. IO口的内部结构框图
输出模式下有两个Mos管
引脚 无非 输入、输出两大类 3.1 输入
模拟输入:一般 ADC采集时 配置为该模式,ADC即采集模拟信号所以 不会经过施密特触发器 浮空输入:在系统复位后 大多数引脚处于该状态 很容易受外部干扰 这种状态下引脚处于不确定状态 不是高电平也不是低电平 一般测得电压1.几V 还不停变化。 上拉输入上拉输入:引脚电平拉为高电平(=VDD) 该模式可以确定引脚默认状态 处于高电平 逻辑1 。一般使用在需要检测外部 信号是 低电平有效的情况下 比如 按键检测(低电平有效、某些低电平有效的数字输出传感器) 注意:芯片内部上拉 电流能力很弱 在需要电流高的情况下 外接上拉。 下拉输入下拉输入: 设置引脚默认电平为 低电平(VSS) 逻辑0 0V 一般用在检测高电平有效的情况下。 3.2 输出 推挽输出
推挽输出的优点 1、可以快速输出(切换)高低电平 2、驱动能力较强,一般IO口驱动电流可以达到20ma 缺点 不能线与(两个推挽输出IO不能接一起) 推挽时线与等于直接短接VCC和地 会烧了芯片。 推挽输出使用场景: 一般用在需要快速切断的状态 驱动LED 驱动一些数字芯片控制引脚 开漏输出开漏输出只有一个NMOS管 在工作 IO除了本身功能 还可以复用其他功能( 好比我这个IO口 通过复用实现ADC输入引脚的功能等)。在这种复用情况下使用开漏/推挽。 4. GPIO模式如何选择官方参考手册给出了推荐配置 P52页 我只截取了一部分 一个IO口除了作为普通引脚 用作输入输出外 还可以有其他功能 我们把这个赋予引脚其他功能的操作叫做复用(重映射) 一个IO口可以复用多个功能 引脚映射有 默认映射 部分 完全三种 不同的映射 让引脚实现不同的作用
所以IO口都可以配置为外部中断模式。就是将一个中断线 绑定到引脚上 中短线是由编号的 需要和 IO口的对应 比如我 PA1 PB1 PC1 三个端口 他们序号是 1 做外部中断时 是绑定到 中断线1 上的 EXTI1 PC2 即 绑定到EXTI2上的 必须对应。 可以让IO口处于锁定状态。无法被修改。只有复位后才可修改。 如何锁定;通过给引脚写1或0完成 锁定时序。 比如:让这个引脚写1 写1 读1 读0 类似 8. GPIO相关寄存器每个外设的寄存器都有一个基地址(起始地址) 。即这个外设寄存器有固定范围。一个外设有又好几个寄存器 这些是在基地址基础上偏移得到。 我们GPIO也是一样的 不同端口有不同的基地 它的地址在哪看 参考手册 如图该芯片 GPIO 不同端口的基地址
为什么叫配置寄存器低位 因为我手里这个芯片CHV003 一个端口 只有8个引脚 如PA0-7 一个配置寄存器是32位4字节 负责8个IO 引脚更多的芯片 就有配置寄存器高位 (一个端口 16个IO口) eg: 配置PA1为推挽输出 速度为50MHZ 1、可以看到一个IO口由 MODE CNF 一共四位配置 MODE[1:0]这两位在低位 2、配置PA1 A端口引脚 是不是要通过配置A端口的配置寄存器 GPIOA_CFGLR 3、要配置为输出模式 速度50MHZ MODE和CNF时配套的 可以看到 由8组 序号是从0-7它对应8个引脚0-7 我们是PA1 那么 要设置 CNF1 MODE1 这四位 输出模式 50MHZ MODE1[1:0] =0x3或3; 3 就是二进制11 推挽输出 CNF1[1:0]=0x00或0;二进制00 合在一起 二进制 0011 是不是就是十进制3; 4、将设置值给这个寄存器 GPIOA_CFGLR | = 3 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |