版权声明:如需转载请标注 https://blog.csdn.net/weixin_40973138/article/details/86678594
设对板上的ADC 数据寄存器进行直接数据读取,其地址为基地址0x4001 2000
加上偏移地址 0x4C
方法一是利用结构体封装对寄存器进行数据读取:
(由于该寄存器只有低16位是有效的,故在此只读取16位的数据。若需读取32位数据,则将u16 改为u32)
(u16) ADC1->DR
其封装结构体为:
#define ADC1 ((ADC_TypeDef *) ADC1_BASE)
#define ADC1_BASE (0x40012000)
typedef struct
{
...
...
__IO uint32_t JDR4; /*!< ADC injected data register 4, Address offset: 0x48 */
__IO uint32_t DR; /*!< ADC regular data register, Address offset: 0x4C */
} ADC_TypeDef;
二是直接对寄存器地址进行数据读取:
(由于该寄存器只有低16位是有效的,故在此只读取16位的数据。若需读取32位数据,则将u16 改为u32)
* (u16*)(0x40012000 + 0x4C)
在该语句中,先将0x4001204C 这一16进制数据强制转化为指向16位无符号整型数据的指针,然后再利用*
将指针所指地址的16位数据取出。