1,在stm32 例子的 c语言 程序中看到这样一句 *(__IO uint16_t *) (((uint32_t)0x60020000) ) ???
(((uint32_t)0x60020000) )是32位的IO地址(物理地址,硬件上设定的,不可修改) *(__IO uint16_t *)是读取该地址的参数值,其值为16位参数. 实际上是读取0x60020000寄存器的参数,或者可以说是这个IO口现在的状态.
#define Bank1_LCD_D ((uint32_t)0x60020000) //disp Data ADDR 32位的IO地址(物理地址,硬件上设定的,不可修改) #define Bank1_LCD_C ((uint32_t)0x60000000) //disp Reg ADDR 按照如上定义,TFT LCD连接的是A16 下面这两句我却搞不懂了 *(__IO uint16_t *) (Bank1_LCD_C)= 32;//将32写入到 Bank1_LCD_D寄存器内 *(__IO uint16_t *) (Bank1_LCD_D)= x; 此处是将地址值强制转化为16位? 如果是,强制转换会舍弃高位,那么0x20000也变成了0x0000 那又如何使RS=1呢? 难道是并没有舍弃高位,进行2次传送? |
2,SRAM,EEPROM,FLASH
FSMC(Flexible Static Memory Controller,可变静态存储控制器)
https://blog.csdn.net/wisepragma/article/details/51622606
内存大小