IAR FOR MSP430 能不能对430的Flash擦出操作仿真?
我的程序如下:voiderase_Flash(char*add){//InitializeFlashpointerFCTL1=FWKEY+ERASE;//SetErase...
我的程序如下:
void erase_Flash(char* add)
{
// Initialize Flash pointer
FCTL1 = FWKEY + ERASE; // Set Erase bit
FCTL3 = FWKEY; // Clear Lock bit
_DINT();
*add = 0; // Dummy write to erase Flash segment
while(FCTL3 & BUSY); //等待擦出完成
_EINT(); //允许中断
FCTL1=FWKEY;
FCTL3 = FWKEY + LOCK; // 锁定
}
这个程序是按照官方Demo来的,在IAR上面仿真运行的时候,只能擦出 add这一个字节,而不是infoA这一段。求解
add的值是0x1080,运行的时候只擦出0x1080对应的字节
而修改为0x1081的时候就只擦出0x1081对应的字 展开
void erase_Flash(char* add)
{
// Initialize Flash pointer
FCTL1 = FWKEY + ERASE; // Set Erase bit
FCTL3 = FWKEY; // Clear Lock bit
_DINT();
*add = 0; // Dummy write to erase Flash segment
while(FCTL3 & BUSY); //等待擦出完成
_EINT(); //允许中断
FCTL1=FWKEY;
FCTL3 = FWKEY + LOCK; // 锁定
}
这个程序是按照官方Demo来的,在IAR上面仿真运行的时候,只能擦出 add这一个字节,而不是infoA这一段。求解
add的值是0x1080,运行的时候只擦出0x1080对应的字节
而修改为0x1081的时候就只擦出0x1081对应的字 展开
1个回答
展开全部
这个你必须要用unsigned int类型做为参数。
如下:
void erase_Flash(unsigned int * add)
{
// Initialize Flash pointer
FCTL1 = FWKEY + ERASE; // Set Erase bit
FCTL3 = FWKEY; // Clear Lock bit
_DINT();
*add = 0; // Dummy write to erase Flash segment
while(FCTL3 & BUSY); //等待擦出完成
_EINT(); //允许中断
FCTL1=FWKEY;
FCTL3 = FWKEY + LOCK; // 锁定
}
如下:
void erase_Flash(unsigned int * add)
{
// Initialize Flash pointer
FCTL1 = FWKEY + ERASE; // Set Erase bit
FCTL3 = FWKEY; // Clear Lock bit
_DINT();
*add = 0; // Dummy write to erase Flash segment
while(FCTL3 & BUSY); //等待擦出完成
_EINT(); //允许中断
FCTL1=FWKEY;
FCTL3 = FWKEY + LOCK; // 锁定
}
追答
flash的擦除是按段进行的。
你要定义下你要擦除的是哪个段
我给你个完整的:
擦除第一段:
unsigned int *adr = (unsigned int*)0x1000; //这个必须要先定义初值,代表你要擦除的段
FCTL2 = FWKEY + FSSEL0 + FN1;
FCTL1 = FWKEY + ERASE;
FCTL3 = FWKEY;
*adr = 0;
FCTL1 = FWKEY + WRT;
while(BUSY&FCTL3);
FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;
以上会将1080之前的全部擦除
如果你要将第二段擦除,用如下代码:
adr = (unsigned int*)0x1080;
FCTL2 = FWKEY + FSSEL0 + FN1;
FCTL1 = FWKEY + ERASE;
FCTL3 = FWKEY;
*adr = 0;
FCTL1 = FWKEY + WRT;
while(BUSY&FCTL3);
FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;
你的问题是没有定义一个初值。
想要IAR FOR 5.5破解版的,请加入这个群:
MSP430设计群2
27726714
我是管理员。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询