STM32F103 GIPO口的寄存器 GRH、CRL理解与使用
引入:
在我们初学STM32的时候经常看代码的时候都会遇到过一些看不懂的东西:
反正我一开始确实不知道这个怎么去理解,下面来说说吧
一、关于IO口的CRH和CRL的不同:
首先在STM32 里面IO口有A-G个,然后分的引脚为0-15一共16个引脚(pin),我们将0-7个pin称为低八位对应CRL,8-15称为高八位对应CRH。形象记忆就是CRhigh(8-15pin)CRlow(0-7pin)。
二、我们以CRL为例子给大家介绍:
在图片中我们可以看到CRL的一些基本的信息,CRL是一个32位的寄存器,那么32位怎么在代码中怎么来的呢,首先我们可以看到一开始引入的那张图片:CRL&=OX0FFF FFFF 的这个信息,这个信息就是代表这三十二位。还不懂?我们将16进制转化为计算机能识别的二进制,一个16进制等于4个2进制的,展开就是32位。这回懂了吧?
还有其实&=是一个清零的操作,我们从先看CRL 他代表的是低8位,然后我们从右开始数,看0在第几个,这里的0在第第八个,那么他代表的就是GPIOB这个IO口的第8个引脚。也就是GPIOB pin7。(因为pin是从0开始数的)
然后引入的图片还剩 GPIOB->CRL|=8<<12; 这个什么意思呢,8用16进制表示是1000 然后 1000 向左移了12位,那么就是1000 0000 0000 0000 ;一个寄存器里面占了4个二进制,一个又4个二进制又分为了4个那么就到了这个寄存器
(这里没讲完的下个博客继续讲解,这里发不完了)