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