新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430F149的內部Flash

        MSP430F149的內部Flash

        作者: 時間:2016-11-24 來源:網絡 收藏
        MSP430F149內部的memory結構,60K Flash+2K RAM。Flash分為主存儲區和信息存儲區,操作都一樣,只是主存儲區每個段512字節,而信息存儲區為128字節,方便擦寫。

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


        當我們有數據要保存到Flash存儲器時,要先對目標段進行整段擦除操作,擦除操作使的對應段FLASH存儲器變成全“1”。應當注意的是,此flash的操作頻率為257 kHz到 476 kHz,時鐘源可選擇,因此我們做時鐘分頻時應當保證頻率在這之間,以下為我編寫的參考程序。

        void Flash_erase(uint addr)
        {//段擦除,512bytes一段
        uchar s;
        s=__get_interrupt_state();//保存當前中斷狀態
        __disable_interrupt();
        while(FCTL3&BUSY);
        FCTL3=FWKEY;

        FCTL1=FWKEY+ERASE;
        *(uchar*)addr=0;
        while(FCTL3&BUSY);
        FCTL3=FWKEY+LOCK;
        __set_interrupt_state(s);//恢復中斷狀態
        }

        void Flash_write(uint addr,uchar dat)
        {//單字節寫入
        uchar s;
        s=__get_interrupt_state();
        __disable_interrupt();
        while(FCTL3&BUSY);
        FCTL3=FWKEY;
        FCTL1=FWKEY+WRT;
        *(uchar*)addr=dat;
        while(FCTL3&BUSY);
        FCTL1=FWKEY;
        FCTL3=FWKEY+LOCK;
        __set_interrupt_state(s);
        }

        void Flash_read(uint addr,uint len)
        {//讀取到數組,此處堆棧應改大
        uint i;
        for(i=0;i *(R+i)=*(uchar*)(addr+i);
        }



        關鍵詞: MSP430F149內部Flas

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 扎鲁特旗| 云南省| 武胜县| 家居| 福海县| 剑河县| 广丰县| 普兰县| 白山市| 长兴县| 星子县| 潢川县| 麻栗坡县| 周宁县| 大丰市| 新安县| 枝江市| 高唐县| 义马市| 平潭县| 泗洪县| 达日县| 洪雅县| 伊川县| 淄博市| 大洼县| 平顺县| 南宁市| 明溪县| 合水县| 资源县| 玉田县| 叙永县| 霍林郭勒市| 潮州市| 综艺| 龙井市| 佛冈县| 思南县| 蒙自县| 平陆县|