在stm32 例子的 c语言 程序中看到这样一句 *(__IO uint16_t *) (((uint32_t)0x60020000) ) 看不懂呀

如题所述

(((uint32_t)0x60020000) )是32位的IO地址(物理地址,硬件上设定的,不可修改)
*(__IO uint16_t *)是读取该地址的参数值,其值为16位参数.
实际上是读取0x60020000寄存器的参数,或者可以说是这个IO口现在的状态.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-06
0x60020000是个IO地址,这句话首先把0x60020000转成uint16_t指针
然后取该指针指向的值,看看data sheet,这个地址大概是哪个IO 控制寄存器的地址
简单讲就是读这个寄存器里的东东
第2个回答  2023-01-11
第一个*是读取 (__IO uint16_t *)强制转换成为一个16位的指针 (括号里面的"*"不能少)因为前面的“*”的操作数必须是指针所以要强转
( ((uint32_t)0x60020000) )最外面的括号是多出来的
( (uint32_t)0x60020000 ) 这个的意思是把里面的看成一个运算后的结果
(uint32_t)0x60020000 前面的括号强制转换成32位

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网