新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > msp430 FLASH 字節(jié)讀寫程序

        msp430 FLASH 字節(jié)讀寫程序

        作者: 時間:2016-11-11 來源:網(wǎng)絡 收藏
        /***** 430 FLASH 字節(jié)讀寫程序 *************************/


        430的數(shù)據(jù)RAM 與FLASH的讀寫

        本文引用地址:http://www.104case.com/article/201611/316577.htm

        #define FLASH_ADDRESS 0x1000 //定義FLASH信息區(qū)地址B段
        void flash_erase(unsigned char*);

        void read_flash(unsigned char *pc_byte, unsigned char *array,unsigned char amount);

        void write_flash(unsigned char *pc_byte,unsigned char *array,unsigned char amount);

        //******************************************************************************

        //FLASH段擦除

        void flash_erase(unsigned char *pc_word)

        {

        while(FCTL3 & BUSY); //如果處于忙狀態(tài),則等待

        FCTL3 = FWKEY ; //清出LOCK標志,解鎖

        FCTL1 = FWKEY + ERASE ; //允許段擦除

        *pc_word = 0; //擦除..擦除..

        while(FCTL3 & BUSY);

        FCTL3 = FWKEY + LOCK ; //加鎖

        }

        //******************************************************************************

        //向FLASH信息區(qū)讀出指定數(shù)量的字節(jié)數(shù)據(jù)

        //unsigned int*pc_word :信息區(qū)數(shù)據(jù)指針

        //unsigned char *array :讀出數(shù)據(jù)存放數(shù)據(jù)數(shù)組,8位長

        //unsigned char amount :讀操的數(shù)量,范圍0-127

        void read_flash(unsigned char *pc_byte, unsigned char *array,unsigned char amount)

        { unsigned char i;

        for(i=0;i

        {

        *array = *pc_byte; //讀數(shù)據(jù),讀數(shù)據(jù)時,flash地址自動加 1

        array++; //接收緩沖區(qū)地址加 1

        }
        }

        //******************************************************************************

        //向FLASH信息區(qū)寫入指定數(shù)量的字節(jié)數(shù)據(jù)

        //unsigned char *pc_byte 信息區(qū)數(shù)據(jù)指針

        //unsigned char *array :讀出數(shù)據(jù)存放數(shù)據(jù)數(shù)組,8位長

        //unsigned char amount :讀操的數(shù)量,范圍0-127

        void write_flash(unsigned char *pc_byte,unsigned char *array, unsigned char amount)

        { unsigned char i;
        _DINT();

        while(FCTL3 & BUSY); //如果處于忙狀態(tài),則等待

        FCTL3 = FWKEY ; //清出LOCK標志

        FCTL1 = FWKEY + WRT ; //寫操作,塊編程,+ BLKWRT;


        for(i=0;i

        {

        *pc_byte = *array;

        //*pc_byte = num;

        // num +=1;

        array++; //發(fā)送緩沖區(qū)地址加 1

        pc_byte++; //寫flash時,地址人為加 1

        while(!(FCTL3 & WAIT)); //如果處于忙狀態(tài),則等待 ,若用軟件仿真,去掉                 //這語句

        }

        FCTL1 = FWKEY; //寫操作完成,清除編程允許位 WRT,BLKWRT

        while(FCTL3 & BUSY);

        FCTL3 = FWKEY + LOCK;

        }


        /*

        #define RAM_ADDRESS 0x300
        __no_init volatile uchar XINHAO[3] @ 0x300; //型號 默認201
        __no_init volatile uchar BdFlag @ 0x303; ////ff表示沒有標定,00表示已標定置零01表示已標定1點.02表示已標定2點.03表示已標定3點
        __no_init volatile uchar EDZHI @ 0x304; //額定值
        __no_init volatile uchar CYSJ @ 0x305; //采樣時間
        __no_init volatile uchar GJSJ @ 0x306; //自動關(guān)機時間
        __no_init volatile uchar YLDW @ 0x307; // 壓力單位
        __no_init volatile float Pyz @ 0x30A; // 置零后的皮壓值
        __no_init volatile float Bdxs[16] @ 0x310; // 標定系數(shù)
        __no_init volatile float Bdzhi[16] @ 0x350; // 標定值
        __no_init volatile float Bdnm[16] @ 0x390; // 標定內(nèi)碼0X0D0


        void main(void)
        {
        volatile unsigned int i; // Use volatile to prevent removal
        // by compiler optimization

        WDTCTL = WDTPW + WDTHOLD; // Stop WDT
        FLL_CTL0 |= XCAP14PF; // Configure load caps
        for (i = 0; i < 10000; i++); // Delay for 32 kHz crystal to
        unsigned char *pc_flash; //定義字節(jié)指針變量 為字節(jié)讀寫
        pc_flash = (unsigned char *) FLASH_ADDRESS; //為指針初始化 // stabilize
        unsigned char *pc_ram; //定義字節(jié)指針變量 為字節(jié)讀寫
        pc_ram = (unsigned char *) RAM_ADDRESS; //為指針初始化

        while(1)

        {
        BdFlag = 1;
        Bdxs[0]=3.14;
        flash_erase(pc_flash); //段擦除
        write_flash(pc_flash,pc_ram ,208); //寫入指定字節(jié)數(shù)量
        read_flash(pc_flash,pc_ram,208); //再讀出剛才寫的字節(jié)
        LPM3; // Enter low power mode 3
        } */



        關(guān)鍵詞: 430FLASH字節(jié)讀

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 边坝县| 广德县| 武强县| 腾冲县| 浦北县| 太湖县| 加查县| 呼玛县| 田林县| 手游| 林州市| 钦州市| 福泉市| 东乡族自治县| 岐山县| 织金县| 贞丰县| 双流县| 株洲市| 舒城县| 霍山县| 正蓝旗| 岳普湖县| 商都县| 肇源县| 盐山县| 曲麻莱县| 焦作市| 图木舒克市| 沙湾县| 上杭县| 丰镇市| 孟州市| 印江| 瑞安市| 永登县| 凌海市| 萍乡市| 吴旗县| 玉溪市| 马关县|