1.#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)
(GPIO_TypeDef *) ... 是强制转换
2.volatile
直接存取原始内存地址
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。
参考博文:https://blog.csdn.net/KISSMonX/article/details/7719100
const:本程序不应该试图去修改它
volatile:可能被外界(硬件、其他进程)改变
3.GPIOx->CRL = 0xffffffff //通过指针访问并修改 GPIOA_CRL 寄存器
->代表“指向”
4.时钟部分:
PLLXTPRE:(HSE divider for PLL entry)时钟分频器
PLLSRC:(PLL entry clock source)时钟开关,选择HSE或HSI
PLLMUL:(PLLmultiplicati on factor)输入倍频因子
5.GPIO_InitTypeDef GPIO_InitStructure;