怎么理解*(volatile uint32 *)0x60001404 = 0x0000;
对32位内存映射寄存器进行操作啊.
*(volatile uint32 *)0x60001404 = 0x0000;
意思就是初始化0x60001404地址中的值为0x0000,一般在很多单片机
程序中完成寄存器的操作时经常这样用,它相当于下面两步
volatile uint32 * p = (volatile uint32 *)0x60001404;
- p = 0x0000;
其中(volatile uint32 *)0x60001404,是利用c语言的强制类型转换把地址值转换为volatile uint32 * 类型的指针(相当于volatile uint32 * p = (volatile uint32 *)0x60001404),然后将0x0000赋给这个指针指向的地址(相当于 * p = 0x0000),也就使
0x60001404地址中的值为0x0000。
*(volatile uint32 *)0x8a000084 |= (1<<4);
*(volatile uint32 *)0x8a000084 |= (1<<4); 表示把0x8a000084地址中的值与1左移
4位后的值( 即二进制10000)进行算术或操作后的值再赋到0x8a000084地址中