在main()函数中的两种写法:
写法一:
int main(void)
{
NAND_FLASH_IDTypeDef FLASH_ID;
………………
FSMC_NAND_ReadID(&FLASH_ID)
………………
………………
}
写法二:
int main(void)
{
NAND_FLASH_IDTypeDef* FLASH_ID;
FLASH_ID=(NAND_FLASH_IDTypeDef*)malloc(sizeof(NAND_FLASH_IDTypeDef));
………………
FSMC_NAND_ReadID(FLASH_ID)
………………
………………
}
写法一和写法二相同点:传递给FSMC_NAND_ReadID()的参数都是(NAND_FLASH_IDTypeDef型)的结构体的首地址
写法一的&FLASH_ID和写法二中的FLASH_ID是等同的。
写法一和写法二不同点:写法一直接定义了一个(NAND_FLASH_IDTypeDef型)的结构体FLASH_ID,首地址为&FLASH_ID
(定义结构的同时,编译器会自动分配一块结构体大小的存储区域)
写法二定义了一个(NAND_FLASH_IDTypeDef型)的结构体指针*FLASH_ID,首地址为FLASH_DE
重点: (定义结构指针同时,编译器不会自动分配一块结构体大小的存储区域,需要手动分配:
FLASH_ID=(NAND_FLASH_IDTypeDef*)malloc(sizeof(NAND_FLASH_IDTypeDef));)
PS:编译环境是在KEIL下的。
本文介绍了一种在KEIL环境下通过FSMC控制器读取NAND闪存ID的方法,包括定义结构体和使用指针两种方式,并对比了两者的异同。
454

被折叠的 条评论
为什么被折叠?



