地址不懂,寄存器

2019-07-16 08:19发布

一直有一个疑问就是在32寄存器中,如#define tiM2    ((TIM_TypeDef ×)TIM2_BASE)
                                                       #define TIM2_BASE        (uint32_t)(0x20002000)这样就明确了TIM2_BASE的地址是0x20002000,可是在上一个指令define宏定义的只不过是把TIM2_BASE替换成一个常数!为什么0x20002000变成TIM2_BASE的地址?不懂!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
deeplythinking
1楼-- · 2019-07-16 11:06
 精彩回答 2  元偷偷看……
李春明
2楼-- · 2019-07-16 16:39
学习一下                 
hx1324654767
3楼-- · 2019-07-16 19:07
这个不是定时器2的地址,而是起始地址,也就是说从这里开始的一段内存都是属于定时器2的,在单片机里,操作其实都是对地址操作的,假如GPIOA_1的地址为0X00000001H,那么你写(uint32_t*)0X00000001 = 1.就是让GPIOA_1输出高电平,
海天黄豆
4楼-- · 2019-07-16 20:11
deeplythinking 发表于 2016-12-27 19:12
#define TIM2    ((TIM_TypeDef ×)TIM2_BASE)
x应该是*吧,转换为指针。

×是*指针
海天黄豆
5楼-- · 2019-07-17 01:14
hx1324654767 发表于 2016-12-28 22:10
这个不是定时器2的地址,而是起始地址,也就是说从这里开始的一段内存都是属于定时器2的,在单片机里,操作其实都是对地址操作的,假如GPIOA_1的地址为0X00000001H,那么你写(uint32_t*)0X00000001 = 1.就是让GPIOA_1输出高电平,

谢谢,琢磨明白了
smile1-1
6楼-- · 2019-07-17 05:44
 精彩回答 2  元偷偷看……

一周热门 更多>