关于stm32寄存器地址定义的小结

本文介绍了在研究STM32开发板时遇到的SysTick寄存器地址查找问题,通过分析相关代码,揭示了STM32寄存器地址的定义方式。虽然代码可读性有待提高,但对于初学者来说是个挑战。
摘要由CSDN通过智能技术生成

最近一直在研读正点原子的stm32开发板,在学习SysTick寄存器的过程中查不到该寄存器的地址是在哪里定义的,很是不解。上网搜后发现 http://www.eepw.com.cn/article/246289.htm
部分代码粘贴如下:

typedef struct
{
  __IO uint32_t CTRL;   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
  __IO uint32_t LOAD;   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register     */
  __IO uint32_t VAL;    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register    */
  __I  uint32_t CALIB; /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */
} SysTick_Type; //声明一个SysTick_Type型的结构体。
#define SysTick   ((SysTick_Type   *)     SysTick_BASE  ) /*!< SysTick configuration struct */
#define SysTick_BASE   (SCS_BASE +  0x0010UL) /*!< SysTick Base 


Address  */
#define SCS_BASE   (0xE000E000UL) /*!< System Control Space Base Address  */
 CTRL_TICKINT_Set是一个宏定义,定义如下
/* CTRL TICKINT Mask */
#define CTRL_TICKINT_Set      ((u32)0x00000002)
#define CTRL_TICKINT_Reset    ((u32)0xFFFFFFFD)

上面代码中定义一个SysTick_Type类型的结构体实例SysTick,而从根本上来说这是一个地址,
就是STM32芯片内部分配给滴答时钟的实际地址0xE000E000UL+0x0010UL。SysTick->CTRL |= CTRL_TICKINT_Set;
就是给地址
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值