在stm32开发中,利用寄存器和标准库一起使用会比较方便。
有些寄存器在使用前要先清零以GPIO控制器配置为例PA8
GPIOA->CRH &= ~(15<<0);//清零 15的2进制是1111 相当于把1111从最右边开始左移了0位 作用是把GPIOA的CRH寄存器的最后4位置零
GPIOA->CRH |= (2<<0);//同理2的2进制是10 相当于10从最右边开始左移了0位 作用是把GPIOA的CRH寄存器的最后2位置1 开始启动某些功能
abc->de &= ~(x<<y) abc的de寄存器的某位或某几位清零
abc->de |= (x<<y ) abc的de寄存器的某位或某几位置1
直接对寄存器进行位操作有时可以更方便快捷,对于标准库没有相应寄存器操作的直接对寄存器操作可以解决这个问题
也可以直接对寄存器赋值 abc->de = 0x00000000 相应的也可以直接读取寄存器的值 data = abc->de 例如在通讯发送和接收数据寄存器 USART1->DR非常好用,可以对整个数据寄存器进行读写操作