新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430---FLASH 讀寫

        MSP430---FLASH 讀寫

        作者: 時間:2013-05-13 來源:網絡 收藏

        可以連續寫入

        // 按字節寫入指定的數量的數據

        void flash_memcpy(char *ptr, char *from, int len)

        {

        _DINT();

        FCTL3 = 0x0A500; /* Lock = 0 */

        FCTL1 = 0x0A540; /* Write = 1 */

        while (len)

        {

        *ptr++ = *from++;

        len--;

        }

        }

        在我們的應用程序中可以將要保存的數據放在一個自定義的結構中,例如:

        typedef struct Setup

        {

        float gain_ch0; // 0通道增益

        float gain_ch1; // 1通道增益

        float gain_ch2; // 2通道增益

        char init_flag; //初始化標記,恒為0xAA;

        }SETUP;

        我們定義了一個SETUP結構,存放三個AD通道的增益,以及其他要掉電保存的信息,init_flag的作用是標志的參數是否已被正確初始化,當我們設置了參數后,將init_flag置一個固定值,例如設為0xAAh,在程序開始運行時,檢查init_flag,當init_flag的值為0xAAh時,表明參數已被初始化。

        使用FLASH參數:在程序中定義一個SETUP類型的指針變量,通過這個指針訪問FLASH中的參數。例如:

        #define SegmentA 0x1080

        float temp;

        SETUP *p_setup_flash = (SETUP *) SegmentA

        if(p_setup_flash-> init_flag == 0xAA)

        {

        temp = p_setup_flash->gain_ch0;

        }

        修改FLASH信息:由于FLASH不能象RAM一樣直接修改,可以將FLASH信息拷貝到RAM中,修改相應參數后,重新保存到FLASH中,之前要先擦除FLASH存儲區。例如:

        SETUP *p_setup;

        SETUP buf; // 臨時變量

        p_setup = (SETUP *) SegmentA // 指向FLASH

        memcpy((char *) buf, (char *) p_setup_flash, sizeof(SETUP)); // 拷貝到RAM

        p_setup = buf; // 指向RAM

        p_setup-> gain_ch0 = 1.02; // 修改參數

        flash_memcpy((char *) p_setup_flash, (char *) buf, sizeof(SETUP)); // 拷貝到FLASH

        存儲器相關文章:存儲器原理



        上一頁 1 2 下一頁

        關鍵詞: MSP430 FLASH 存儲器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永定县| 达拉特旗| 简阳市| 新建县| 墨江| 桦川县| 伊通| 五原县| 济宁市| 巫溪县| 昭觉县| 江津市| 惠东县| 丹棱县| 五华县| 双柏县| 涟源市| 句容市| 景东| 垦利县| 准格尔旗| 崇信县| 临湘市| 娱乐| 东兴市| 东港市| 班戈县| 正蓝旗| 砚山县| 山西省| 武汉市| 山丹县| 正镶白旗| 古丈县| 宜州市| 西充县| 杂多县| 昌江| 磴口县| 文化| 玛沁县|