对于熟悉51单片机的人来说,都知道它的头文件REG51.h,这个头文件就是用来定义寄存器的。
STM32F103也有头文件,它的头文件是stm32f10x.h,这个文件也是用来定义单片机的寄存器。
51单片机定义寄存器,只需要一条语句就可以,例如:
sfr P0=0x80;
而STM32定义寄存器,就要复杂一些了,它用到了结构体、宏定义、指针。
巧妙的应用了结构体地址按照成员变量所占字节大小自动增加的优势。
我们给寄存器写值,就变成了给结构体的某个成员变量赋值。
给结构体成员变量赋值,有两种形式:
“->”和“.”
例如:
GPIOD->BSRR = 0x00000001;
(*GPIOD).BSRR = 0x00000001;
第一种符号,常用作给结构体指针中的变量赋值。
第二种符号,常用作给普通的结构体变量赋值。
不考虑常用性的话,两种用法都不会有误。
微信公众号:科技老顽童