STM32中TIM_TypeDef* TIMx,定义的是什么数据?具体如下:

1个回答

  • 库函数的精髓之一.

    首先TIM2是一个结构体,就和我们写C语言的结构体一样,一般情况下,我们定义的结构体会有系统分配内存,放在系统堆栈当中,但是在这里:

    #define TIM2 ((TIM_TypeDef *) TIM2_BASE)

    定义了一个结构体变量TIM2,并且把这个结构体变量强制放在地址为TIM2_BASE的地方,我们可以查到TIM2_BASE的值为0x40000000,你可以从STM32应用文档中看到TIM2外设对应的地址:

    也就是TIM2外设相关控制寄存器都在这个地址范围里面,对TIM2结构体变量成员的操作就等于对TIM2外设寄存器的操作.比如:

    TIM2->CR1的地址就是0x40000000,TIM2的CR1寄存器地址也是0x40000000

    TIM2->CR2的地址就是0x40000004,TIM2的CR2寄存器地址也是0x40000004

    那么对TIM->CR1和TIM2->CR2的读写操作也就是对定时器2的CR1、CR2寄存器的读写操作.