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

mysql asp网站广州58同城招聘网最新招聘

mysql asp网站,广州58同城招聘网最新招聘,河南省工程造价信息网官网,加拿大pc网站搭建stm32内部flash在线读写操作 #x1f4cd;相关开源库文章介绍《STM32 利用FlashDB库实现在线扇区数据管理不丢失》 ✨不同系列#xff0c;内部flash编程有所区别。例如stm32f1是按照页擦除#xff0c;半字#xff08;16bit#xff09;或全字(32bit)数据写入#xff1b;st… stm32内部flash在线读写操作 相关开源库文章介绍《STM32 利用FlashDB库实现在线扇区数据管理不丢失》 ✨不同系列内部flash编程有所区别。例如stm32f1是按照页擦除半字16bit或全字(32bit)数据写入stm32f4系列按照扇区擦除可以字节(8bit)、半字(16bit)、字(32bit)和双字(64bit)数据写入.其他系列可以参考对应的参考手册内容说明。 stm32内部flash划分 STM32F10xxx闪存编程手册https://picture.iczhiku.com/resource/eetop/WhkWowqdUaYYwcnv.pdf 不同型号的MCU内部flash容量是不同的。STM32F1为例按照页划分 flash容量低于256KB的页大小为1KB0x400 flash容量等于或大于256KB的页大小为2KB0x800 stm32f4xx系列基于扇区操作含 4 个 16 KB 扇区、1 个 64 KB 扇区 和 7 个 128 KB 扇区。PM0081编程手册 闪存编程 标准的闪存编程顺序 检查FLASH_SR寄存器的BSY位以确认没有其他正在进行的编程操作设置FLASH_CR寄存器的PG位为1写入要编程的半字到指定的地址等待BSY位变为0读出写入的地址并验证数据。 注意 当FLASH_SR寄存器的BSY位为1时不能对任何寄存器执行写操作。 编程过程流程图 stm32标准库FLASH编程操作 /*** 函 数FLASH编程字* 参 数Address 要写入数据的字地址* 参 数Data 要写入的32位数据* 返 回 值无*/ void MyFLASH_ProgramWord(uint32_t Address, uint32_t Data) {FLASH_Unlock(); //解锁FLASH_ProgramWord(Address, Data); //编程字FLASH_Lock(); //加锁 }/*** 函 数FLASH编程半字* 参 数Address 要写入数据的半字地址* 参 数Data 要写入的16位数据* 返 回 值无*/ void MyFLASH_ProgramHalfWord(uint32_t Address, uint16_t Data) {FLASH_Unlock(); //解锁FLASH_ProgramHalfWord(Address, Data); //编程半字FLASH_Lock(); //加锁 } HAL库FLASH编程实现 /*** brief 将16位数据写入FLASH** param data 指向要写入的数据的指针* param len 要写入的数据长度以半字为单位* param address 写入数据的起始地址* return HAL_StatusTypeDef 返回HAL状态表示操作是否成功*/ HAL_StatusTypeDef FLASH_HALFWORD_Write(uint16_t *data, uint16_t len, uint32_t address) {// 解锁FLASH以便进行写操作HAL_FLASH_Unlock();// 初始化循环变量uint16_t i 0;// 循环写入数据for (i 0; i len; i){// 对FLASH进行编程使用HAL_FLASH_Program函数以半字16位为单位写入数据if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, address, *data) HAL_OK){// 如果写入成功更新地址和数据指针address address i * 2; // 地址每次增加2字节16位data data 1; // 数据指针指向下一个半字}else{// 如果写入失败锁定FLASH并返回错误状态HAL_FLASH_Lock();return HAL_ERROR;}}// 所有数据写入成功后锁定FLASH并返回成功状态HAL_FLASH_Lock();return HAL_OK; } /*** brief 将32位数据写入FLASH** param data 指向要写入的数据的指针* param len 要写入的数据长度以字为单位* param address 写入数据的起始地址* return HAL_StatusTypeDef 返回HAL状态表示操作是否成功*/ HAL_StatusTypeDef FLASH_WORD_Write(uint32_t *data, uint16_t len, uint32_t address) {// 解锁FLASH以便进行写操作HAL_FLASH_Unlock();// 初始化循环变量uint16_t i 0;// 循环写入数据for (i 0; i len; i){// 对FLASH进行编程使用HAL_FLASH_Program函数以字32位为单位写入数据if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, *data) HAL_OK){// 如果写入成功更新地址和数据指针address address i * 4; // 地址每次增加4字节32位data data 1; // 数据指针指向下一个字}else{// 如果写入失败锁定FLASH并返回错误状态HAL_FLASH_Lock();return HAL_ERROR;}}// 所有数据写入成功后锁定FLASH并返回成功状态HAL_FLASH_Lock();return HAL_OK; }信息块的编程 选项字节编程流程 检查FLASH_SR寄存器的BSY位以确认没有其他正在进行的编程操作设置FLASH_CR寄存器的OPTWRE位为1设置FLASH_CR寄存器的OPTPG位为1写入要编程的半字到指定的地址等待BSY位变为0读出写入的地址并验证数据 闪存擦除 闪存可以按页擦除也可以全部擦除。 页擦除 闪存的任何一页都可以通过FPEC的页擦除功能擦除擦除一页应遵守下述过程 检查FLASH_SR寄存器的BSY位以确认没有其他正在进行的闪存操作用FLASH_AR寄存器选择要擦除的页设置FLASH_CR寄存器的PER位为1设置FLASH_CR寄存器的STRT位为1等待BSY位变为0读出被擦除的页并做验证。 闪存页擦除过程流程图 stm32标准库FLASH页擦除操作 /*** 函 数FLASH页擦除* 参 数PageAddress 要擦除页的页地址* 返 回 值无*/ void MyFLASH_ErasePage(uint32_t PageAddress) {FLASH_Unlock(); //解锁FLASH_ErasePage(PageAddress); //页擦除FLASH_Lock(); //加锁 }HAL库 页擦除操作 HAL_StatusTypeDef FLASH_Erase_Page(uint32_t Page_Addr,uint32_t Page_Num) {FLASH_EraseInitTypeDef EraseInitStruct;uint32_t PageError 0;HAL_FLASH_Unlock(); //解锁内部flashEraseInitStruct.TypeErase FLASH_TYPEERASE_PAGES;//标明Flash执行页面只做擦除操作EraseInitStruct.PageAddress Page_Addr; //声明要擦除的地址EraseInitStruct.NbPages Page_Num; //要擦除的页数此参数必须是Min_Data 1和Max_Data (最大页数-初始页的值)之间的值if (HAL_FLASHEx_Erase(EraseInitStruct, PageError) ! HAL_OK){HAL_FLASH_Lock();return HAL_ERROR;}HAL_FLASH_Lock();return HAL_OK; }全部擦除 可以用全部擦除功能擦除所有用户区的闪存信息块不受此操作影响。建议使用下述过程 检查FLASH_SR寄存器的BSY位以确认没有其他正在进行的闪存操作设置FLASH_CR寄存器的MER位为1设置FLASH_CR寄存器的STRT位为1等待BSY位变为0读出所有页并做验证。 闪存全擦除过程流程图 stm32标准库FLASH全擦除操作 /*** 函 数FLASH全擦除* 参 数无* 返 回 值无* 说 明调用此函数后FLASH的所有页都会被擦除包括程序文件本身擦除后程序将不复存在*/ void MyFLASH_EraseAllPages(void) {FLASH_Unlock(); //解锁FLASH_EraseAllPages(); //全擦除FLASH_Lock(); //加锁 }⚡需要注意全擦除会对内部整个flash进行擦除擦除后整个mcu成为空片原来所烧录的程序将不复存在。如需再使用需要重新烧录程序。 读取操作 内置闪存模块可以在通用地址空间直接寻址任何32位数据的读操作都能访问闪存模块的内容并得到相应的数据。 代码实现 /*** 函 数FLASH读取一个32位的字* 参 数Address 要读取数据的字地址* 返 回 值指定地址下的数据*/ uint32_t MyFLASH_ReadWord(uint32_t Address) {return *((__IO uint32_t *)(Address)); //使用指针访问指定地址下的数据并返回 }/*** 函 数FLASH读取一个16位的半字* 参 数Address 要读取数据的半字地址* 返 回 值指定地址下的数据*/ uint16_t MyFLASH_ReadHalfWord(uint32_t Address) {return *((__IO uint16_t *)(Address)); //使用指针访问指定地址下的数据并返回 }/*** 函 数FLASH读取一个8位的字节* 参 数Address 要读取数据的字节地址* 返 回 值指定地址下的数据*/ uint8_t MyFLASH_ReadByte(uint32_t Address) {return *((__IO uint8_t *)(Address)); //使用指针访问指定地址下的数据并返回 }相关测试代码 基于STM32F103VC大容量芯片页容量2K HAL库 通过网盘分享的文件STM32F103VC_FLASH_Program.rar 链接: https://pan.baidu.com/s/1BrxBfByBddTfv4BUbFdZlA?pwd3qry 提取码: 3qrystd标准库基于STM32F103VC大容量芯片页容量2K。参考江协科技代码 通过网盘分享的文件15-1 读写内部FLASH.rar 链接: https://pan.baidu.com/s/115JvFfDWzdurpzlsaiWl6Q?pwdvepn 提取码: vepn
http://www.hkea.cn/news/14356974/

相关文章:

  • 做色流网站要注意什么地方网站上传后如何设置首页
  • 公司网站建设优帮云怎么用wordpress搭建网站
  • 汕头网站制作后缀贵阳市 网站建设
  • 成都网站建设空间wordpress 关键词堆砌
  • 优秀国外设计网站app做微信的网站叫什么名字
  • 建设北京公司网站3 阐述网站建设的步骤过程 9分
  • 信用门户网站建设方案推销产品什么网站好
  • 萧山区建设工程质量监督站网站旅游外贸网站建设推广
  • 旅游网站建站目的wordpress ssh
  • 罗岗网站建设河北pc端网站开发
  • app界面设计网站济宁网站运营
  • 网络营销属于哪个专业成都seo服务
  • 宁波网站建设明细报价成都网站建设优化公司
  • 私人彩票网站做几年牢河北城乡建设厅网站显示不全
  • 做量化投资网站wordpress 图片模糊
  • 网站布局模板网站如何提交关键词
  • 手机网站 设计图衡阳网站
  • 山东建设机械协会官方网站百度推广包做网站吗
  • 丰台网站建设报价微信公众号(网站建设)合同
  • 吉林省可信网站认证牌匾做网站前的准备
  • 网站的设计方法有哪些内容七台河新闻联播视频
  • 宁波网站推广联系方式沙县住房和城乡规划建设局网站
  • 源代码大全兰州正规seo整站优化工具
  • 网站建设 html5诸葛企业网站建设公司
  • 网站托管运营方案外贸网站如何推广
  • 黄石手机网站建设网站做什么推广好
  • world做网站网络服务合同模板
  • 网站怎么做优化wordpress不支持php7
  • 一级做a爱免费网站无锡新吴区住房建设和交通局网站
  • wordpress qux主题沙洋县seo优化排名价格