国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

MSP430 Flash編程程序

發布時間:2008-10-22 21:55    發布者:MSP430
關鍵詞: Flash , MSP430
//flash.c文件 #define __FLASH__ #define __HW_v_2_1__ #include "flash.h" /************************************************************************************************* * This section contains all FLASH memory relevant functions: * * writeByte * * writeWord * * eraseFLASH * * saveInfoFlash * * changeInfo * * updateInfo * * * *************************************************************************************************/ /************************************************************************************************* Function : flash_writeFLASH Parameter : *dst : address within the FLASH page value : BYTE that has to be written to FLASH Date : 08.09.2001 / 17.11.2002 / 22.11.2002 Description : this function writes a byte to an address in FLASH memory warning: in FLASH only zeros can be written. if a bit value needs to be set to one from zero, the whole page has to be erased, thus setting all bits to one. then the value can be written correctly. this function does not perform. the necessary FLASH page erase. *************************************************************************************************/ void flash_writeByte(BYTE *dst, BYTE value) { FCTL2 = FWKEY | FSSEL0 | 20; //clock source is MCLK, divisor is 20 do { _NOP(); } while(FCTL3 & 0x0001); // wait for BUSY to reset FCTL3 = FWKEY; // reset the LOCK bit to enable program/erase FCTL1 = FWKEY | WRT; // set WRT for single acces *dst = value; // do the write as a byte return; } /************************************************************************************************* Function : flash_writeWord Parameter : *dst : address within the FLASH page value : BYTE that has to be written to FLASH Date : 22.11.2002 Description : this function writes a word to an address in FLASH memory warning: in FLASH only zeros can be written. if a bit value needs to be set to one from zero, the whole page has to be erased, thus setting all bits to one. then the value can be written correctly. this function does not perform. the necessary FLASH page erase. *************************************************************************************************/ void flash_writeWord(WORD *dst, WORD value) { FCTL2 = FWKEY | FSSEL0 | 20; //clock source is MCLK, divisor is 20 do { _NOP(); } while(FCTL3 & 0x0001); // wait for BUSY to reset FCTL3 = FWKEY; // reset the LOCK bit to enable program/erase FCTL1 = FWKEY | WRT; // set WRT for single acces *dst = value; // do the write as a word return; } /************************************************************************************************* Function : flash_eraseFLASH Parameter : *seg : any address within the FLASH page that is to be erased Date : 08.09.2001 / 19.11.2002 Description : this function erases a FLASH page *************************************************************************************************/ void flash_eraseFLASH(BYTE *seg) { FCTL2 = FWKEY | FSSEL0 | 20; //clock source is MCLK, divisor is 20 do { _NOP(); } while(FCTL3 & 0x0001); // wait for BUSY to reset FCTL3 = FWKEY; // reset the LOCK bit to enable program/erase FCTL1 = FWKEY | ERASE; // set single segment erase function *seg = 0xFF; // do a dummy write to start erase FCTL3 = FWKEY | LOCK; // lock the flash again return; } /************************************************************************************************* Function : flash_saveInfoFlash Parameter : *container : pointer to updated copy of data in RAM *flashPageBase : pointer to start of destination flash segment Date : 11.09.2002 / 26.11.2002 Description : saves info flash page 0 to RAM (!!! works only for INFO flash access !!!) *************************************************************************************************/ void flash_saveInfoFlash(BYTE *container, BYTE *flashPageBase) { BYTE i; flashPageBase = (BYTE*)((WORD)(flashPageBase) & 0xFF80); // wrap around for flash page base address for(i=0;i<128;i++) { container = *flashPage++; } } /************************************************************************************************* Function : flash_changeInfo Parameter : *container : pointer to updated copy of data in RAM *pointer : original pointer to variable that has to be updated value : new value for variable Date : 11.09.2002 / 26.11.2002 Description : chages a word in the info flash 0 data (in RAM) *************************************************************************************************/ void flash_changeInfo(BYTE* containerBase, BYTE *pointer, BYTE value) { // pointer points into flash page to variable that is supposed to be changed // subtract flash page offset (0x1000) and add scratch pad offset pointer = (BYTE*)(((WORD)(pointer) & 0x7F) + (WORD)(containerBase)); *pointer = value; } /************************************************************************************************* Function : flash_update Parameter : *container : pointer to updated copy of data in RAM *flashPageBase : pointer to start of destination flash segment Date : 11.09.2002 / 26.11.2002 Description : erases the flash page and writes the values from the RAM save area to flash (!!! works only in INFO flash !!!) *************************************************************************************************/ void flash_updateInfo(BYTE *container, BYTE *flashPageBase) { // assumes prior saving and changing of flash data BYTE i; flashPageBase = (BYTE*)((WORD)(flashPageBase) & 0xFF80); // wrap around for flash page base address _DINT(); flash_eraseFLASH(flashPageBase); for(i=0;i<128;i++) { flash_writeByte(flashPageBase++,*(container++)); } _EINT(); } /*flash.h文件 +-------------------------------------------------------------------------------+ : copyright (c) Jean Randhahn : +-------------------------------------------------------------------------------+ : Project : CANeye - Uni Rostock : : Compiler : IAR workbench GUI 2.31E / target descriptor v1.26A/WIN : +-------------------------------------------------------------------------------+ : : : class : flash : : File name : flash.h : : Target hardware : MSP430F148/9 : : : : File Editor : J. Randhahn : : Created : 06.08.2002 : : : : Description : : : : : : : : : : +-------------------------------------------------------------------------------+ : : : Modification history: : : : : : +-------------------------------------------------------------------------------+ */ #ifndef __FLASH_H__ #define __FLASH_H__ #ifdef __FLASH__ /*::::::::::::::::::::::::: START OF LOCAL PART ::::::::::::::::::::::::::::::::*/ /*----------------------- LOCAL INCLUDES ---------------------------------------*/ #include #include "type.h" /*----------------------- LOCAL DEFINITIONS ------------------------------------*/ /*----------------------- LOCAL FUNCTION DECLARATIONS --------------------------*/ void flash_eraseFLASH(BYTE *seg); void flash_writeWord(WORD *dst, WORD value); void flash_writeByte(BYTE *dst, BYTE value); void flash_saveInfoFlash(BYTE *container, BYTE *flashPage); void flash_changeInfo(BYTE* containerBase, BYTE *pointer, BYTE value); void flash_updateInfo(BYTE *container, BYTE *flashPageBase); /*----------------------- LOCAL CONSTANTS AND VARIABLES ------------------------*/ /*----------------------- PUBLIC VARIABLES WITH INITIALISATION -----------------*/ /*::::::::::::::::::::::::: END OF LOCAL PART ::::::::::::::::::::::::::::::::::*/ #else /*----------------------- PUBLIC VARIBALES INITIALIZED LOCALLY -----------------*/ #endif /*-------------------- PUBLIC DEFINITIONS --------------------------------------*/ /*-------------------- PUBLIC CONSTANTS AND VARIABLES --------------------------*/ /*-------------------- PUBLIC FUNCTION DECLARATIONS ----------------------------*/ extern void flash_eraseFLASH(BYTE *seg); extern void flash_writeWord(WORD *dst, WORD value); extern void flash_writeByte(BYTE *dst, BYTE value); extern void flash_saveInfoFlash(BYTE *container, BYTE *flashPage); extern void flash_changeInfo(BYTE* containerBase, BYTE *pointer, BYTE value); extern void flash_updateInfo(BYTE *container, BYTE *flashPageBase); #endif //type.h文件 /* START type definitions for convinience with microcontrollers ****************************/ typedef unsigned char BYTE; /* 8 bits */ typedef unsigned short WORD; /* 16 bits */ typedef unsigned long LONGWORD; /* 32 bits */ /* for dividing a WORD into two BYTEs */ typedef union _WORD_BYTE { WORD w; BYTE b[2]; } WORD_BYTE;
本文地址:http://www.qingdxww.cn/thread-2865-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 5分鐘詳解定時器/計數器E和波形擴展!
  • 為何選擇集成電平轉換?
  • 基于CEC1712實現的處理器SPI FLASH固件安全彈性方案培訓教程
  • PIC18-Q71系列MCU概述
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区福利 | 欧美亚洲日本在线 | 欧美大片网站 | 国产成人精品曰本亚洲 | 久久夜色精品国产噜噜小说 | 免费高清不卡毛片在线看 | 日韩欧美国产中文字幕 | 欧美日韩中文视频 | 国产特级全黄一级毛片不卡 | 在线观看免费视频黄 | 99re精彩视频| 我不卡神马 | 91精品人成在线观看 | 国产色综合天天综合网 | 欧美黄色一级片免费看 | 精品国产一区二区三区2021 | 毛片免费观看网站 | 欧美色青| 韩国一级毛片免费完整视频 | 亚洲一区二区三区高清 | 精品91自产拍在线观看一区 | 欧美男女网站 | 国产女明星专区视频在线播放 | 欧洲精品一区二区三区在线观看 | 在线观看中文字幕一区 | 在线视频欧美精品 | 国内精品久久久久久久久 | 欧美日日夜夜 | 凹凸世界第4季完整免费 | 国内精品一区二区三区 | 久久99精品久久只有精品 | 精品国产三级a在线观看 | 欧美日韩一区二区视频免费看 | 欧美日韩一级二级三级 | 日韩精品一区二区三区中文在线 | 亚洲欧美中文字幕在线网站 | 欧美成人黑人性视频 | 91网站入口 | 欧美精品手机在线 | 青青成人在线 | 国产一级在线免费观看 |