工具与软件:
我将使用 #pragma SET_DATA_SECTION (".fram_vars")在 FRAM 中声明变量。 但是、我无法实时修改此类变量。 我添加一个愚蠢的代码来演示。 数组"w2"获取一些初始值、但随后我需要修改这些值。
#pragma SET_DATA_SECTION (".fram_vars")
volatile unsigned char w2[10][2]={0};
#pragma SET_DATA_SECTION ()
// Función para inicializar el arreglo con valores específicos
void init_array()
{
unsigned char w2_init[10][2]={
{15,103}、
{137,154}、
{146,152}、
{217、70}、
{114,251}、
{6、6}、
{71、27}、
{122,109}、
{41,220}、
{237,232};
for (int i=0;i<10;i++)
{
for (int j=0;j<2;j++)
{
w2[i][j]= w2_init[i][j];
}
}
}
void GPIO_init (void)
{
//配置 GPIO
P1OUT = 0;
P1DIR = 0xFF;
P2OUT = 0;
P2DIR = 0xFF;
P3OUT = 0;
P3DIR = 0xFF;
P4OUT = 0;
P4DIR = 0xFF;
PJOUT = 0;
PJDIR=0xFFFF;
// PM5CTL0 |= LOCKLPM5;//禁用 GPIO 上电默认高阻抗模式
PM5CTL0 &=~μ A LOCKLPM5;//激活之前配置的端口设置
CSCTL0_H = CSKEY >> 8;//解锁 CS 寄存器
CSCTL1 |= DCORSEL;
CSCTL1 |= DCOFSEL_4;//如果 DCORSEL=1、将 DCO 设置为16MHz
// CSCTL1 |= DCOFSEL_6;//如果 DCORSEL=0、将 DCO 设置为8MHz、
/*CSCTL2 = SELA__VLOCLK | SELS__DCOCLK | SELM__DCOCLK;//设置 SMCLK = MCLK = DCO
// ACLK = VLOCLK
CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;//设置所有分频器
CSCTL0_H = 0;*///锁定 CS 寄存器
FRCTL0 = FRCTLPW | NACCESS_1;// Cambia el valor NACCESS_x para agregar la custidad correcta de Estados de espera
}
int main (void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
GPIO_init ();
init_array();
volatile unsigned char dummie=0;
volatile unsigned char d=0;
dummie = w2[3][1];
for (int i=0;i<10;i++)
{
for (int j=0;j<2;j++)
{
dummie=w2[i][j];
W2[i][j]=92;
d=w2[i][j];
}
}
返回0;
}