开发板上LED部分的电路如图2-15所示。
图2-15 开发板上LED部分的电路原理图
板上有三个LED,分别是红(R)、绿(G)、蓝(B)三种颜色。这三个LED共同封装在一个灯珠内,因此看上去好像只有一个LED。使用三基色(RGB)的LED,通过三个GPIO控制三个LED的亮度,可以得到五颜六色的彩灯效果。
以红色LED为例,它的阴极接在PF6上,阳极接在3.3V电源上,中间有一个470Ω的限流电阻。若要点亮这个LED,只需使PF6输出0即可;若要关闭LED,只需使PF6输出1即可。
为了实现PF6输出0,我们要将PF6设置成输出模式(01)。可以使用推挽结构(0),选择最低速度2M(00),并选择无上拉/下拉(00),如图2-16所示。
图2-16 对MODER6进行设置(www.xing528.com)
此时若将GPIOF_MODER设置为0x0000 1000,则会影响到其他15个引脚的设置,即剩下的引脚都会变成输入状态(00),显然这是不允许的,其他位原有的数据必须保持不变。这时可以使用与、或逻辑运算进行处理:一个位要置1,使用或1运算;一个位保留原来数据不变,使用与1运算;一个位要置0,使用与0运算;一个位保留原来数据不变,使用与1运算。分两个步骤:先将MODER6两个位归0,使用GPIOF_MODER=0xFFFF CFFF & GPIOF_MODER的运算,使得MODER6置00,其他位保留,可以简写成GPIOF_MODER & =0xFFFF CFFF。再设置MODER6相应的位,使用或运算,GPIOF_MODER=0x0000 1000|GPIOF_MODER,即GPIOF_MODER|=0x0000 1000。这样就将MODER6设置为01,而使其他30个bits保持不变。
为了进一步增加可读性,将I/O引脚6索引到公式中,把上述两个公式改为
比如要将引脚13的模式设置为10(复用模式),很容易地将左移数6改为13,置位左移对象改成2:
使用同样的方法可以对PF6的GPIOF_OTYPER、GPIOF_OSPEEDR、GPIOF_PUPDR这三个模式寄存器进行设置:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。