stm32寄存器操作笔记(一)GPIO篇1

        上图是单片机GPIO的硬件设计,这里进行简要的介绍。GPIO的硬件主要分为了两个部分,上部分的读出设计的下部分的写入设计。

        先看写入部分,源头可以选择本芯片写入或者是片上外设的输出写入,有芯片自身写入的数据经过位设置/清除寄存器和输出数据寄存器后进入到输出控制中。注意这里的两个寄存器,在后面对GPIO的操作中有详细介绍。输出控制的输入还有一个来源是复用功能输出,这里可以通过GPIO的输出模式来进行选择,其涉及到的寄存器在后面会介绍。在输出控制之后有两个MOS管来控制输出,这里涉及到的模电MOS管的知识,这里只做简要讲解,详细过程可以去教材中学习。当写入1时,输出控制上面输出1,下面输出0。这里作者不太确定是否是这样,但可以肯定的是输入1时,PMOS管导通,NMOS管截止,IO口上拉,最后GPIO口输出高电平。相反,输入0时,NMOS管导通,PMOS管截止,IO口下拉,最后GPIO口输出低电平。这就是IO口的写入过程。

        再看读出部分,从IO口进来,首先经过一个上拉和下来的选择。可以简单想做是在没有读数时,IO口电平由该设置选择。可以选择上拉,下拉,都不拉也就是浮空(此时的IO口电平并不稳定)。在之后就进入到一个施密特触发器,这个触发器的作用在数电中有详细描述,需要的可以去详细了解,之后进入到输入数据寄存器保存。我们就可以通过该寄存器读取IO口的输入电平了。

        stm32参考手册中还详细描写了外设配置的GPIO配置,在1.11的外设的GPIO配置那一章中,需要操作时可以去查看。

之后就是重头戏,GPIO相关寄存器的操作:

1.GPIOx_CRL/H寄存器,这是两个寄存器,分别控制0到7和8到15的IO口。因为是相同功能的寄存器,所以只讲CRL了。

 这里一位IO口占据4个位,分别是2位CNF和2位MODE,从下面的描述可以看出MODE主要控制的是IO选择输入还是输出。输出的最大翻转的速度是多少。CNF就是选择相关的输入输出模式。这里注意。该如何选择何种模式碰到再详细介绍。

2.GPIOx_IDR寄存器,这个寄存器在硬件设计那可以知道作用是保存由IO口读取的数据,所有位都是只读。

3.GPIOx_ODR寄存器,这个寄存器的作用是记录个IO口的输出状态,因为该寄存器是可读可写,所以也可以通过写入该寄存器来控制IO口的输出。

4.GPIOx_BSRR寄存器,这个寄存器的作用是控制IO口输出1还是0。0到15的BS位写入1时是将对应位设置为1,16到31的BR位写入1时是将对应位设置为0。

5.GPIOx_BRR寄存器,这个寄存器功能被GPIOx_BSRR覆盖,主要是给位写0。

6.GPIOx_LCKR寄存器,这个寄存器功能是将端口功能锁定,在下次系统复位之前将不能再更改端口位的配置。我从来没有用到过。大概了解就行。

总结重要寄存器:GPIOx_CRL/H,GPIOx_IDR,GPIOx_BSRR这三个寄存器基本每次操作都需要用到,要熟练掌握。

OK!到这GPIO的所有寄存器也就告一段落,寄存器数目并不多,对其的掌握难度很小,可以说是单片机中的hello world了。这一节主要是对理论的一些描述,下一篇可能就找一些实例来具体体现如何操控GPIO口。

tips:学生党,最近一直在忙一个神经网络的作业(不使用框架纯手搓),只能说更新很不稳定,而且本人也是中途入的单片机,对知识的掌握有限,也希望读者能多多指出,相互交流,共同进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值