欢迎来到天天文库
浏览记录
ID:34385631
大小:110.97 KB
页数:6页
时间:2019-03-05
《【msp430入门例程】:flash模块new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、【MSP430入门例程】:FLASH模块一、擦除操作�选择适当的时钟源和分频因子,为时序发生器提供正确时钟输入�如果Lock=1,则将它复位�监视BUSY标志位只有当BUSY=0时才可以执行下一步,否则一直监视BUSY。�如果擦除一段,则设置ERASE=1。�如果擦除多段,则设置MERAS=1l如果擦除多段,则设置MERAS=1�如果整个FLASH全擦除,则设置RASE=1同时MERAS=1。�对擦除的地址范围内任意位置作一次空写入,用以启动擦除操作。如果空写的地址在不能执行擦除操作的段地址范围内,则写入操作不起作
2、用二、FLASH编程操作�选择适当的时钟源以及合适的分频因子�如果Lock=1,将它复位�监视BUSY位,直到BUSY=0是才可进入下一步�如果写入单字或单字节,则将设置WRT=1�如果是块写或多字、多字节顺序写入,则将设置WRT=1,BLKWRT=1�将数据写入选定地址时启动时序发生器,在时序发生器的控制下完成整个过程三、FLASH错误操作的处理�如果写入高字节口令码错误,则引发PUC信号:小心操作可以避免;�在对FLASH操作期间读FLASH内容,会引发ACCVFIG状态位的设置:小心操作可以避免�因为在对FL
3、ASH操作期间,需要较长的时间,如果这时看门狗定时器MSP430--171�因为在对FLASH操作期间,需要较长的时间,如果这时看门狗定时器的数据将近尾声,则看门狗定时器溢出:建议用户程序在进行FLASH操作之前先停掉看门狗定时器,等操作结束之后再打开看门狗。�所有的FLASH类型的MSP430器件的0段都包含有中断向量等重要的程序代码,如果对其进行擦除操作,将会引起严重的后果:建议用户程序在进行FLASH操作之前,先将该段的重要数据(或程序代码)保存到RAM中或写入到其他段的重要数据(或程序代码)保存到RAM中或
4、写入到其他暂时未用的段中,等待该段操作完毕再还原那些数据(或程序代码);同时一定不要使正在执行的程序处在正要被擦除的段中;也不要在FLASH操作期间允许中断的发生。/***例一***************//******************************************************************************若想了解MSP430单片机常用模块应用原理,请下载<>http://www.microcontrol.cn/datash
5、eet/msp430/msp430base/MSP430register_guide.pdf先向FLASH信息区读出所需的所有有用数据(或整块读出或根据需要)并放到指定RAM缓冲区中(若只修改某部分数据),然后直接修改RAM中的数据.修改完成后就擦除整段FLASH信息区.接着向FLASH信息区写入刚才所修改的数据.最后再读出刚才写入的数据放进缓冲区.在整个调试过程中,我们可以通过IAR的调试环境查看其写入和读出的数据进行校验//以下程序我已通进MC430F14开发板进行验证,MC430F14可以直接下载在你的板子实
6、验.//应用目标板:www.Microcontrol.cnMC430F14开发板//编写:微控设计网DC版主*******************************************************************************///MSP430F147的FLASH空间分配为://程序代码区:0x1100--0xffff,按512字节分段//信息区:0x1000--0x10ff,按128字节分段//用户编写时不要将代码从0x1100地址开始写起,否则....呵呵....//另外
7、,用户要了解FLASH物理特性,FLASH被擦除后将全变为1.以后的写入只能由1写为0,若//需要由0写1是不能的.那么此时就必须先将整段擦除然后再对其写入.所以FLASH有这个不便//不像EEPROM那样方便,F147共有两段信息区(256),每段为128字节.如果是一般应用也够了.//若然不够,你可以选用MC430F14开发板上的EEPROM做为信息存贮器.当然这要灵活应用.#include#defineFLASH_ADDRESS0x01000//定义FLASH信息区地址B段unsi
8、gnedcharwrite_buff[4]={0x01,0x02,0x04,0x08};//用于存放被数组unsignedcharread_buff[4];//读出缓冲区和写缓冲区unsignedcharcheckout[4];//读出缓冲区,用于验证的voidflash_write_byte(unsignedchar*pc_byte,unsignedcha
此文档下载收益归作者所有