寄存器的具体地址=寄存器初始地址(基地址)+偏移地址
由上图可以清晰的看出,当对应的RCC位输出为1时,相应的GPIOX口开始工作。
1、端口配置低寄存器(GPIOx_CRL) (x=A..E)
2、端口配置高寄存器(GPIOx_CRH) (x=A..E)
3、端口输入数据寄存器(GPIOx_IDR) (x=A..E)
4、端口输出数据寄存器(GPIOx_ODR) (x=A..E)
5、端口位设置/清除寄存器(GPIOx_BSRR) (x=A..E)
6、端口位清除寄存器(GPIOx_BRR) (x=A..E)
7、端口配置锁定寄存器(GPIOx_LCKR) (x=A..E)
所以我们可以推出,GPIOX_CRH则代表了PA8~PA15八个高位管脚。
代码实现思路:打开对应管脚的时钟——>配置输出,确定输出模式——>输出低电平——>实现流水灯
根据上面我们所给出的实验思路,这里依据思路进行代码编写。
由于我采用的PA0、PB0、PC14三个管脚,所以这里对三个GPIO口进行激活,即使用位操作,将对应的为数变为1。
这里的&运算以及|运算,是对相应的PX管脚进行输出模式操作;由于CRL寄存器共有32位,所以这里采用8位的16进制来直接赋值(每一位16进制对应着4位2进制)。
我采用的是低电平点亮LED,高电平点灭LED
注意:这里采用延时函数是为了实现LED循环点亮点灭的操作
关于该软件的使用方法我就不做过多说明: 这里我给出可以参考的链接,有需要的可以直接去查看,步骤写的很清楚,有很大的借鉴价值。
这里需要补充说明一下,在进行芯片烧录时,需要注意将芯片上的boot置1,在烧录完毕后,再讲其改为0。 十分重要!!!!
更多回帖