工具/软件:Code Composer Studio
您好!
我想在 msp430f5342的信息 B 存储器中存储4种不同类型的数组、但是每次写入数据时、我都必须根据系列用户指南中给出的示例完全擦除信息 B 并写入新数据。 这样、我就无法擦除信息 B 的特定字节
是否有任何方法可以擦除信息存储器的特定数据或任何新方法?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
您好!
我想在 msp430f5342的信息 B 存储器中存储4种不同类型的数组、但是每次写入数据时、我都必须根据系列用户指南中给出的示例完全擦除信息 B 并写入新数据。 这样、我就无法擦除信息 B 的特定字节
是否有任何方法可以擦除信息存储器的特定数据或任何新方法?
您好 Samatha、
您是否为 MSP430F5xxx 器件使用 Driverlib? Driverlib 具有可用于写入闪存特定段的函数。 您可以在器件网页上的"软件"下找到它。
请参阅下面的代码和附带的屏幕截图、我使用相应的数据创建了4个数组、并分别写入每个数组、而不会影响其他数组。
#pragma LOCATION (array_8、0x1900);//指定数组位置
#pragma LOCATION (array_8_2、0x190a);
#pragma LOCATION (array_16、0x1914);
#pragma LOCATION (array_32、0x1928);
uint8_t array_8[10]={};//定义数组
uint8_t array_8_2[10]={};
uint16_t array_16[10]={};
uint32_t array_32[10]={};
uint8_t DATA_8[5]={1、2、3、4、5};//数据
uint16_t DATA_16[5]={1、2、3、4、5};
uint32_t DATA_32[5]={1、2、3、4、5};
uint8_t * segBstart =&array_8[0];//段 B 开始
int main (空)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
FlashCtl_eraseSegment (segBstart);//擦除段 B
FlashCtl_write8 (&data_8[0]、&array_8[0]、5);//写入第一个数组
FlashCtl_write8 (&data_8[0]、&array_8_2[0]、5);//写入第二个数组
FlashCtl_write16 (&data_16[0]、&array_16[0]、5);//写入第三个数组
FlashCtl_write32 (&data_32[0]、&array_32[0]、5);//写入第四个数组
返回0;
}
祝你一切顺利、
Colin Adema
您应该尝试下载 driverlib 的更新版本、以防翻译中出现问题。 这里是执行该操作的链接
该下载中的闪存控制文件应该具有写入特定位置的函数、就像我在示例中所做的那样。
请告诉我这是否有帮助!
祝你一切顺利、
Colin Adema