关于STM32串口通信之疑惑小结

如上图所示,第1420行,USART1_BASE为USART1基地址,(USART_TypeDef*) USART1_BASE 的作用是将USART1_BASE强制转换为 USART_TypeDef* 类型的指针,这条语句的整体作用是:将USART1_BASE强制转换为 USART_TypeDef* 类型的指针,然后将这个指针命名为USART1.(个人理解:USART1是一个指向USART_Typedef结构体类型的指针,即相当于USART1是一块空间的地址(首地址),在这个空间上按照 STM32的USART1寄存器地址的顺序依次排列着这个结构体的各个成员,每个结构体成员的地址(顺序)和STM32硬件上相应的寄存器地址相照应,然后就可以通过USART1随意使用各个寄存器了。
如图2,图3,易知USART_TypeDef 中成员的顺序和STM32硬件上寄存器地址的顺序是一 一照应的。
图2

)
图3

如图4第156行,通过指针USART1 可以访问USART_DR寄存器
图4

评论