当前位置: 首页 > news >正文

盘锦网站建设制作盐城做网站价格

盘锦网站建设制作,盐城做网站价格,网站免费诊断,今天有什么新闻#xfeff;#xfeff; 在我们应用开发时#xff0c;经常会有一些程序运行参数需要保存#xff0c;如一些修正系数。这些数据的特点是#xff1a;数量少而且不需要经常修改#xff0c;但又不能定义为常量#xff0c;因为每台设备可能不一样而且在以后还有修改的可能。… 在我们应用开发时经常会有一些程序运行参数需要保存如一些修正系数。这些数据的特点是数量少而且不需要经常修改但又不能定义为常量因为每台设备可能不一样而且在以后还有修改的可能。将这类数据存在指定的位置需要修改时直接修改存储位置的数值需要使用时则直接读取会是一种方便的做法。考虑到这些数据量比较少使用专门的存储单元既不经济也没有必要而STM32F103内部的Flash容量较大而且ST的库函数中还提供了基本的Flash操作函数实现起来也比较方便。 以大容量产品STM32F103VE为例其Flash容量达到512K可以将其中一部分用作数据存储。如下是大容量的Flash组织模式 根据上面的Flash组织模式我们可以根据自己的使用方便来作相应的定义。因为大容量每个扇区定义为2K而小容量和中容量都定义为1K所以我们做如下宏定义 #define FLASH_SIZE 512          //所选MCU的FLASH容量大小(单位为K)#if FLASH_SIZE256#defineSECTOR_SIZE           1024    //字节 #else#defineSECTOR_SIZE           2048    //字节 #endif 虽然ST的库函数比较全面但都是基本操作为了使用方面根据我们自己的需要对其进行再次封装。 对于读操作相对比较简单内置闪存模块可以在通用地址空间直接寻址就像读取变量一样。 //从指定地址开始读取多个数据 void FLASH_ReadMoreData(uint32_tstartAddress,uint16_t *readData,uint16_t countToRead) {uint16_tdataIndex;for(dataIndex0;dataIndexcountToRead;dataIndex){readData[dataIndex]FLASH_ReadHalfWord(startAddressdataIndex*2);} }//读取指定地址的半字(16位数据) uint16_t FLASH_ReadHalfWord(uint32_t address) {return*(__IO uint16_t*)address; }//读取指定地址的全字(32位数据) uint32_t FLASH_ReadWord(uint32_t address) {uint32_ttemp1,temp2;temp1*(__IO uint16_t*)address;temp2*(__IO uint16_t*)(address2);return(temp216)temp1; } 对于写操作相对来说要复杂得多写操作包括对用户数据的写入和擦除。为了防止误操作还有写保护锁。但这些基本的操作ST的库函数已经为我们写好了我们只需要调用即可。 STM32复位后FPEC模块是被保护的只有在写保护被解除后我们才能操作相关寄存器。STM32闪存的编程每次必须写入16位任何不是半字的操作都会造成错误。如下图是Flash写的过程 STM32的FLASH在编程的时候也必须要求其写入地址的FLASH是被擦除了的也就是其值必须是0XFFFF否则无法写入。Flash的擦除要求必须整页擦除所以也必须整页写入否则可能会丢失数据。如下图是Flash页擦除过程 如下为Flash全擦除过程 根据以上图示我们便写数据写入函数如下 //从指定地址开始写入多个数据 void FLASH_WriteMoreData(uint32_tstartAddress,uint16_t *writeData,uint16_t countToWrite) {if(startAddressFLASH_BASE||((startAddresscountToWrite*2)(FLASH_BASE1024*FLASH_SIZE))){return;//非法地址}FLASH_Unlock();         //解锁写保护uint32_toffsetAddressstartAddress-FLASH_BASE;               //计算去掉0X08000000后的实际偏移地址uint32_tsectorPositionoffsetAddress/SECTOR_SIZE;            //计算扇区地址对于STM32F103VET6为0~255uint32_tsectorStartAddresssectorPosition*SECTOR_SIZEFLASH_BASE;    //对应扇区的首地址FLASH_ErasePage(sectorStartAddress);//擦除这个扇区uint16_tdataIndex;for(dataIndex0;dataIndexcountToWrite;dataIndex){FLASH_ProgramHalfWord(startAddressdataIndex*2,writeData[dataIndex]);}FLASH_Lock();//上锁写保护 } 在擦除之前应该将页面上的数据读取出来与要写入的数据合并待擦除后再写入但这样数据量很大大容量是2K一个扇区所以考虑到是少量数据存储所以每次都将全部数据同时写入简化操作也减少数据处理量。经测试以上程序写入和读出数据均正确可以实现内部Flash的读写操作。需要更深入了解可以参考《STM32F10xxx 闪存编程参考手册》。 欢迎关注
http://www.pierceye.com/news/769800/

相关文章:

  • 新乡商城网站建设哪家专业潮汕学院网站开发
  • 西安响应式网站开发网站空间多少钱一年
  • 做电子相册的大网站怎样提高网站的权重
  • seo网站设计外包去哪个网站有客户找做标书的
  • 微商招商网站源码互联网营销推广方案
  • 深圳做网站服务公司河北石家庄最新新闻
  • 山东济南seo整站优化唐山网站建设那家性价比高
  • c 可以做哪些网站小说网站建设采集
  • 公司网站备案条件高校网站集群平台子站开发
  • 制作网站能赚钱吗单位发购物或电影卡有哪些app
  • 我们网站在那里登陆后台系统管理网站建设服务咨询
  • 免费上传图片的网址网站seo工作内容
  • chatgpt 网站一对一直播软件开发
  • 网站做排行多少费用个人电脑做网站打不开数据库
  • 做网站是比特币的滁州做网站电话号码
  • php网站开发说明怎么样建网站卖东西
  • 网站图片做多大浙江建设人才网
  • 网站关键词宝塔wordpress腾讯云
  • 优化排名推广教程网站免费房地产网站模板
  • 商城网站建设都需要多少钱电子商务网站建设预算
  • 万荣做网站怎么优化一个网站关键词
  • 潍坊市建设局网站网络工程师 网站建设
  • 做网站要求什么条件计算机网络技术学什么
  • 建设网站呼叫中心有什么好处中国能源建设集团有限公司级别
  • 免费论坛建站二 网站建设的重要性
  • wordpress站点迁移怎样做带音乐的表白网站
  • 海淀网站制作网站建设基本技术
  • 做一个平面网站的成本如何搭建一个app平台
  • 建设工程学部研究生培养网站义乌网站建设和制作
  • 简单的模板网站吉安网站建设jxthw