用STM32点亮第一个LED灯-用位带操作实现
前言
位带的代码比库函数和寄存器都要简洁,在之后编程的一些步骤里面可能也会用到简单的位带操作,关于位带操作的具体定义可以参考正点原子的《STM32开发指南》第五章和《Cortex-M3权威指南》的第五章位带操作。
但实际上位带操作的定义不用了解的特别深,我自己学了之后感觉位带操作就是简化版的库函数,其核心都是操作寄存器,所以这篇博客牵扯的定义方面比较少,具体是怎么去用位带操作来简化程序。
位带操作原理
这里直接引用了正点原子视频里面的图片,根据我理解的意思就是根C语言的指针有点相似。不去直接改变其值,而是改变寄存器这个位映射的地址的值,从而改变了位的值。举个例子,我要把住户A改成B,A住在A11号楼,如果我们通过寄存器来更改的话,我们找的对象是A,即找到A,然后将他更换成B。而通过寄存器则不需要主动找A,只需要知道A的住处(地址),即我们将A11楼的住户改成B就可以了。
而我们怎么知道的A住在A11楼呢?可以由下图的两个映射公式来确定,但是并不需要深入的了解,在之后的工程中可以现学现用。