这篇就GPIO外设的小应用,前面的博客是有代码的,比如控制led灯的亮灭。
因为单单GPIO输入输出高低电平肉眼是无法观测的,运用LED的亮灭状态就可以很直观的知道,相应的输出寄存器的值,当引脚输出低电平时(ODR对应指为0),反之可推;不同的芯片的LED灯所对应的端口的引脚都是不一样的,需要查阅官方手册的;根据原理图我们可以知道,让对应的引脚输出低电平,线路就会导通,灯就会亮起来的,所以从上面的非常简单的分析可以知道:1.要让某个原件进行正常的工作(状态的保持和转变),要知道它状态的变化实质上是什么东西的变化造成的(暂且只讨论到寄存器,更深的层次就是集成电路的内容了,本人还不具备资格讨论);2.原件工作状态的变化的原理是什么?也就是为什么寄存器存储内容的变化会带动原件的变化(这个就要看原理图了,这方面都是电路来规定的);3.相应工作模式,相应配置(通俗来讲就是该写代码了)。
那么如何来看电路图?这个就根据个人的需求来学习你该学习的,梭罗曾说过“没人会去穿不合身的衣服来让自己不舒服”(原话不是这样,但本意差不多)。用别人封装好的东西,其实查查官方文档就可以了解你想要的状态该怎么去配置寄存器;现阶段我的需求很简单,就是看电流的走向(不知道为什么想在这里说一句“动态平衡”,就当脑抽了吧!)。
正如上面说的,你想要完成某项工作,就得配置外设的工作模式(本质上当然就是设置寄存器了),那么什么才是合适的工作模式呢?你想让一个灯亮,直接设置输出寄存器对应位为0即可,但看看外设的初始化结构体就知道,要让外设正常工作海的配置其他的很多参数;刚开始我会觉得这么多模式啊参数啊!想想别人创造出来都没觉得麻烦,用它的人在没认真学习过的前提下,好像还没资格去做那样的评价。
那么依据上面的说法,按键控制灯的亮灭又是怎么办到的呢?按照上面的三步走;1.按键的按下与弹起,实质上是会给相应的GPIO端口引脚的一个输入信号,只要检测对应引脚的输入寄存器的对应位的值,就可以知道按键的状态了,2.由原理图知,按键按下,电路导通,给引脚输入一个高电平;松开电路断开;3.对输入模式和其他原件进行配置,以完成目标任务
最后说一句,有些东西可能会被中断,但永远不会被停止。