前面介绍了寄存器点灯的方法,准确说好像是叫寄存器位寻址的操作方法,比较繁琐,其实用寄存
器也可以用简单一点的代码语句来写,只不过可读性比较差些。比如:
RCC->APB2ENR=0X00000010;//配置GPIOC的外设时钟
GPIOC->CRH=0X00300000; //配置高寄存器GPIOC为推免输出模式
GPIOC->ODR=0X00000000;//配置PC13端口输出低电平
寻找寄存器地址的步骤:
1.我们直接可以通过查手册来找APB2 外设时钟使能寄存器(RCC_APB2ENR):
GPIOC端口配置规则:
IOPCEN:IO端口C时钟使能 (I/O port C clock enable) 由软件置’1’或清’0’
0:IO端口C时钟关闭; 1:IO端口C时钟开启。
即置1开启 时钟,所以32位寄存器应该对应填写为十六进制0x00000010;
RCC->APB2ENR=0X00000010;
2.配置GPIOC为推免输出模式(至于什么是推免输出,下一章库函数会说到)
找到端口配置高寄存器(GPIOx_CRH) (x=A..E),因为端口x的配置位为(y = 8…15)的为高寄存器
(而且这里PC13端口是STM32原理图的灯的电平输入端口,即y=13,所以要选择高寄存器来配置。)
按照手册的说明配置GPIOC的13号端口为推免输出模式,速度频率为50MHZ(频率随便选),
即GPIOC->CRH=0X00300000;
3.第三步就是配置GPIOC的输出了,找到stm32手册里的端口输出数据寄存器(GPIOx_ODR) (x=A..E),13端口给0输出低电平,
即GPIOC->ODR=0X00000000;
这样我们就配置好了GPIOC13的点灯寄存器操作。下面总结两种寄存器点灯的写法。
写法1的可读性强,且不会影响寄存器的其它位,写法二比较傻瓜式,比较快一点。