一直都是用STM32做项目中的主控芯片,在编程的时候,之前一直忽视了一个问题,那就是寄存器的位置是如何定义的,为什么用一个USART1->CR操作就能够给这个CR寄存器赋值?其实这是一个比较底层的问题,不懂这方面的知识也并不影响使用STM32,因为底层的定义工作,厂家一般都会做好,但是多了解一点原理性的东西,对自己还是很有帮助的。
这里我就以STM32F407的USART寄存器为例,介绍一下ST厂家是如何做寄存器定义的。
首先在stm32f4xx.h中
typedef struct
{
__IO uint16_t SR; /*!< USART Status register, Address offset: 0x00 */
uint16_t RESERVED0; /*!< Reserved, 0x02

本文以STM32F407的USART寄存器为例,阐述ST公司如何定义寄存器地址。USART2在APB1总线上的起始地址为0x4000 4400,所有外设基地址为0x4000 0000。通过结构体定义寄存器,可以简化对众多寄存器的操作,如使能USART2只需简单语句。这种方法在STM32以及其他厂商的处理器中广泛应用。
8138

被折叠的 条评论
为什么被折叠?



