主题中讨论的其他器件: MSP430F4152
工具/软件:TI C/C++编译器
您好!
我使用寄存器级别为 MSP432闪存写入进行编码、因为我们需要使用这种方式进行编码。
MSP432P401R 中信息存储器的地址为0x20_0000至0x30_FFFF、因此我需要将地址指针变量的类型定义为无符号长整型。
我不知道它是否会影响我写入的变量的存储空间。
当我使用 MSP430F4152时、信息的地址为0x1000、所以我将其定义为无符号短整型、它需要2个字节来保存数据。
现在、在 MSP432中、即使数据被定义为无符号短整型、 无符号字符或直接给出了类似0xFFF0的数据、也需要4个字节来保存数据。
如何确定闪存中数据的存储空间?
我不需要为数据提供如此大的空间、而需要为多个数据提供如此大的空间。
这些是我在下面编辑的代码、
void Save_Flash (void)
{
unsigned long * Flash_ptr1;
unsigned long * Flash_ptr2;
flash_ptr1=(unsigned long *) 0x00200000;
FLASH_ptr2=(unsigned long *) 0x00200004;
FLCTL->PRG_CTLSTAT |= FLCTL_PRG_CTLSTAT_ENABLE;//启用 Word 程序操作
FLCTL->BANK0_INFO_WEPROT &=~FLCTL_BANK0_INFO_WEPROT_PROT0;//组0的保护,扇区0被禁用
FLCTL->ERASE_CTLSTAT = FLCTL_ERASE_CTLSTAT_TYPE_1;//设置信息存储器已擦除
FLCTL->ERASE_CTLSTAT |= FLCTL_ERASE_CTLSTAT_START;//擦除开始
while (((FLCTL->ERASE_CTLSTAT &&(FLCTL_ERASE_CTLSTAT_STATUS0 + FLCTL_ERASE_CTLSTAT_STATUS1)!= FLCTL_ERASE_CTLSTAT_STATUS3));//检查存储器擦除是否完成
FLCTL->ERASE_CTLSTAT |= FLCTL_ERASE_CTLSTAT_CLR_STAT;//清除 FLCTL_ERASE_CTLSTAT 的状态
*闪存_ptr1+=0xFFF0;
*Flash_ptr2+=LCD_Page;
FLCTL->PRG_CTLSTAT &&~FLCTL_PRG_CTLSTAT_ENABLE;//禁用 Word 程序操作
FLCTL->BANK0_INFO_WEPROT |= FLCTL_BANK0_INFO_WEPROT_PROT0;//启用 Bank0的保护,扇区0
}
空 GET_Flash (空)
{
unsigned long * Flash_ptr1;
unsigned long * Flash_ptr2;
flash_ptr1=(unsigned long *) 0x00200000;
FLASH_ptr2=(unsigned long *) 0x00200004;
Flash_State=* Flash_ptr1++;
LCD_Page=*Flash_ptr2++;
}
BR、
Yu-Chuan、Chen