请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F5419A 工具/软件:Code Composer Studio
大家好、我正在尝试将开关状态保存在闪存中。 因此、下次打开器件时、我将具有先前的开关设置。 以下是我 无法这样做的代码、请帮助 我。
#include
volatile int RDATA;
volatile int SW1=0;
volatile int SW2=0;
//函数原型
void read (void);
void write (void);
void switching (unsigned int);
void main (void)
{
WDTCTL = WDTPW + WDTHOLD;//为方便起见,禁用看门狗计时器。
P1DIR |= BIT0;//将引脚4.1设置为输出方向。
P1DIR |= BIT1;
// P4SEL |= BIT1;//选择引脚4.1作为 PWM 输出
//配置开关
P2REN ||(BIT7 + BIT6);
P2OUT |=(BIT7 + BIT6);
P2IE |=(BIT7 + BIT6);
P2IES|=(BIT1)
~
(BIT1 + BIT1);(BIT1 + BIT1)(BIT1 + BIT1)(BIT1);(BIT7 + BIT1 (BIT1)(BIT1 + BIT1)(BIT1);(BIT1 (BIT1 + BIT1)(BIT1)(BIT1 + BIT2)(BIT1)(BIT1
如果(SW1 = 0)
{
切换(SW2);//根据计数器 SW2的值打开 LED
}
,否则(SW1 = 1)
{
切换(RDATA);//根据 SW1 = 1时写入闪存存储器上的计数器 SW2的值打开 LED;
write();
}
}
void switching (unsigned int a)
{
if (a =0)
{
P1OUT = BIT0;
}
否则(a =1)
{
P1OUT = BIT1;
}
void write (void)
{
__disable_interrupt ();//禁用
中断 int * Flash_ptr =(int *) 0x0E000;
while (BUSY & FCTL3
);}}} //检查闪存是否被使用
FCTL1 = FWKEY + ERASE;//设置擦除位
FCTL3 = FWKEY;//清除锁定位
* Flash_ptr = 0;//虚拟写入在
(BUSY & FCTL3)期间擦除闪存段
;//检查闪存是否被使用
FCTL1 = FWKEY; //清除 WRT 位
FCTL3 = FWKEY + LOCK;//设置 LOCK 位
FCTL1 = FWKEY + WRT;//设置 WRT 位以进行写操作
,同时(((FCTL3 & BUSY)!= 0)
;
* Flash_PTR= SW2;//向闪存写入值
FCTL1 = FWKEY; //清除 WRT 位
FCTL3 = FWKEY + LOCK;//设置 LOCK 位
_ENABLE_INTERRUPT ();
}
void 读取(void)
{
int * Flash_ptr =(int *) 0x0E000;
while (FCTL3 & Busy)!= 0)
;
RDATA =* Flash_void;
}
#pragma vector=port2_page_trader=(int *) 0x00_breake_page_translation_trand
(0x00);(偶数–0xP2IV_translation_range (0x00)(0x00_translation_breake_blue_blue_
//无
情形0x02:
break;//Pin0
情形0x04:
break;//Pin1
情形0x06:
break;//PIN2
情形0x08:
break;//pin3
情形0x0A:
break;//pin4
情形0x0C:
break;//pin5
情形0x0E:
{
if (SW1 < 1)
{
SW1+:break;// pin4情形0x0C:break;// bpin5案例0xbt;// bpin5 =
~= 0xbt;}= 0xbt;// bp2p2p1 = 1 = 1;buF
{
//pin7
if (SW2 < 1)
{
SW2++;
}
else
{
SW2 = 0;
}
P2IFG &&~BIT7;
break;
}
}
