最近在做专案,剩下FLASH问题还未解决,
以下是我的程式码:
透过uart 丟0x11给a变量并且往FLASH写入,接着主程式就会判断输出高电位,
但是呢断电后在上电发现a变量并没有保存下来(因为这时就变回输出低电位),
拜托高手可以帮个忙怎么使用flash读写吗??我看手册影片范例都不太懂... 真的很急呀
#include "NUC1xx.h"
#include "Driver\DrvGPIO.h"
#include "Driver\DrvFMC.h"
#include "Driver\DrvSYS.h"
#define LDROM_BASE 0x00100000
void Initsystem(void);
void UartInit(void);
void FMC_Init();
int a,data;
main(void)
{
Initsystem();
UartInit();
FMC_Init();
while(1)
{
DrvFMC_Read(LDROM_BASE+4,&data);
a=data;
GPIOA->DOUT = 0x01;
while(1)
{
if(a==0x11)
{
GPIOA->DOUT = 0x00;
}
}
}
}
void Initsystem()
{
UNLOCKREG();
SYSCLK->PWRCON.XTL12M_EN = 1;
SYSCLK->CLKSEL0.HCLK_S = 0;
LOCKREG();
}
void UartInit()
{
SYS->GPBMFP.UART0_TX=1;
SYS->GPBMFP.UART0_RX=1;
SYSCLK->APBCLK.UART0_EN = 1;
SYSCLK->CLKSEL1.UART_S = 3;
SYSCLK->CLKDIV.UART_N = 0;
UART0->FCR.TFR =1;
UART0->FCR.RFR =1;
UART0->FCR.RFITL = 0;
UART0->LCR.PBE = 0;
UART0->LCR.WLS = 3;
UART0->LCR.NSB = 0;
UART0->BAUD.DIV_X_EN=0;
UART0->BAUD.DIV_X_ONE=0;
UART0->BAUD.DIVIDER_X=0;
UART0->BAUD.BRD=22;
UART0->IER.RDA_IEN=1;
NVIC_EnableIRQ(UART0_IRQn);
}
void UART0_IRQHandler()
{
while(UART0->ISR.RDA_IF==1)
{
a=UART0->DATA;
DrvFMC_Write(LDROM_BASE+4,a);
}
}
void FMC_Init()
{
UNLOCKREG();
DrvFMC_EnableISP();
DrvFMC_EnableLDUpdate();
}
|