一、使用寄存器控制LED灯
一、LED电路原理
如下图,右侧为3.3V高电平电压,左侧对应PB5等,一共三个端口,对应三种颜色LED灯,要想让灯亮,即让对应端口输出0V电压,这样就产生了由右向左的3.3V压降。
二、如何输出端口值
如下图ODR寄存说明,以点亮绿灯为例,该端口为低16位有效,PB0端口需要输出为0,此处给出偏移地址为0Ch,而查阅手册得知GPIO的B端口物理地址为0x40010C00,所以要想点亮绿灯,要控制rw0位为0,其真实地址即为0x40010C0C即代码
*(unsigned int *)0x40010C0C &=~(1<<0);
此处第一个*表示改变0x40010C0C地址的内存
unsigned int *表示强制改变0x40010C0C为指针类型,
&是与运算
~是取反运算
(1<<0)表示1左移0位
所以即为0左移0位,与原来的低16位相与,只有rw0位变为0,其余位不变,这也是常用的清零操作。