从代码理解寄存器与库函数
学习DMA传输的时候注意到一点:
DMA_InitStructure.DMA_PeripheralBaseAddr=(u32)(&USART1->DR);//外设地址为串口1的数据寄存器
DMA_InitStructure.DMA_PeripheralBaseAddr我们应该给它DMA传输的外设地址。
OK!现在开始解析
①为什么要u32 ? 这是因为外设地址寄存器CPAR为32位填入有效(如下图)
②为什么要有&(取址)符号? 因为后面是一个结构体指针,指向结构体内的成员,他的数据类型为成员变量的数据类型!所以我们这里用取址符号来取其地址,不然数据类型就是成员变量的数据类型了。看不懂先看下面的内容,慢慢你就明白了
、、那么DR这个结构体成员的数据类型是什么呢? 它是一个16位的数据类型(如下图)----因此我们需