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

电影网站模板html百度网站排名优化价格

电影网站模板html,百度网站排名优化价格,南通网站制作哪个好,网站空间邮箱每年要续费吗文章目录 一、概要二、内部FLASH排布三、内部FLASH主要特色四、OTP函数介绍五、测试验证 一、概要 STM32系列是一款强大而灵活的微控制器,它的片内Flash存储器可以用来存储有关代码和数据,在实际应用中,我们也需要对这个存储器进行读写操作。…

文章目录

    • 一、概要
    • 二、内部FLASH排布
    • 三、内部FLASH主要特色
    • 四、OTP函数介绍
    • 五、测试验证

一、概要

  STM32系列是一款强大而灵活的微控制器,它的片内Flash存储器可以用来存储有关代码和数据,在实际应用中,我们也需要对这个存储器进行读写操作。

  STM32的FLASH主存储块按页组织,有的产品每页1KB,有的能到2KB,页面典型的用途就是用于按页擦除FLASH,STM32F407的FLASH页大一点,能到16K,我们也叫做扇区。


二、内部FLASH排布

1. 根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。
2. 主存储块:用于存储程序,我们写的程序一般存储在这里,用户还可以存储数据。信息块又分成两部分:系统存储器、OTP、选项字节。
3. 系统存储器存储用于存放在系统存储器自举模式下的启动程序(BootLoader),当使用ISP方式加载程序时,就是由这个程序执行。这个区域由芯片厂写入BootLoader,然后锁死,用户是无法改变这个区域的。
4. OTP(One Time Program)区域,指的是只能写入一次的存储区域,容量为528字节,写入后数据就无法再更改,OTP常用于存储应用程序的加密密钥。
5. 选项字节存储芯片的配置信息及对主存储块的保护信息,主要有写保护字节,读保护字节等。

STM32F407产品主存储块512KB, 每个扇区16KB~128K大小不等,一共有7个扇区

在这里插入图片描述
在这里插入图片描述


三、内部FLASH主要特色

  • 容量大的芯片可以高达 1 MB 容量
  • 128 位宽数据读取
  • 字节、半字、字和双字数据写入
  • 扇区擦除与批量擦除
  • 存储器构成

  Flash 结构如下:
  — 主存储器块,含 4 个 16 KB 扇区、1 个 64 KB 扇区 和 7 个 128 KB 扇区。
  — 系统存储器,器件在系统存储器自举模式下从该存储器自举。此区域为意法半导体预留,其中包含自举程序,用以通过以下接口之一对 Flash 进行重新编程:USART1、USART3、CAN2、USB OTG FS 设备模式(DFU:设备固件升级)。自举程序由 ST 在器件制造期间编写,用于防止误写/误擦除操作。
  — 512 OTP(一次性可编程)字节,用于存储用户数据。OTP 区域包含 16 个附加字节,用于锁定相应的 OTP 数据块。
  — 选项字节:读写保护、BOR 级别、软件/硬件看门狗以及器件在待机或停机模式下的复位。


四、OTP函数介绍

1. HAL_StatusTypeDef HAL_FLASH_Unlock(void);
  作用:解锁FLASH控制寄存器访问
  返回值:写寄存器的状态

2. HAL_StatusTypeDef HAL_FLASH_Lock(void);
  作用:锁定FLASH控制寄存器访问
  返回值:写寄存器的状态

3. HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);
  作用:解锁FLASH选项控制寄存器访问
  返回值:写寄存器的状态

4. HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);
  作用:锁定FLASH选项控制寄存器访问
  返回值:写寄存器的状态

5. HAL_StatusTypeDef HAL_FLASH_OB_Launch(void)
  作用:启动选项字节加载
  返回值:写寄存器的状态

6. HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
  作用通过选定的字节类型进行数据写入
  返回值:写寄存器的状态

7. OPT数据读写过程代码:由于OPT是用户数据的一次性写入,所有需要确定写入的数据无误,不然存储的数据一旦写入,就无法再进行更改,但是可以进行无数次的读写。

// 定义OPT区域的起始地址和结束地址
#define OPT_START_ADDR 0x1FFF7800
#define OPT_END_ADDR   0x1FFF7A0F/*** @brief 写入数据到OPT区域* @param data:需要写的用户数据* @param size:数据个数*/
void write_to_opt(uint32_t *data, uint32_t size)
{uint32_t addr = OPT_START_ADDR;HAL_StatusTypeDef status;// 检查数据大小是否超过OPT区域的大小if ((size * 4) > (OPT_END_ADDR - OPT_START_ADDR)){return;}HAL_FLASH_Unlock();             // 解锁FLASHstatus = HAL_FLASH_OB_Unlock(); // 解锁选项字节区域HAL_FLASH_OB_Launch();          // 生效设置// 写入OPT数据for (uint32_t i = 0; i < size; i++){// 按字写入数据status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addr, data[i]);if (status != HAL_OK){rt_kprintf("opt data write error!!!\n");break;}addr += 4;}// 锁定FLASHHAL_FLASH_OB_Lock();HAL_FLASH_Lock();
}// 读取OPT区域的数据
void read_from_opt(uint32_t *data, uint32_t size)
{uint32_t addr = OPT_START_ADDR;for (uint32_t i = 0; i < size; i++){data[i] = *(uint32_t*) addr;addr += 4;}
}/*** @brief 设置OPT数据*/
int write_opt_data(int argc, char **argv)
{if (argc != 2 && argc != 3){return -RT_ERROR;}else{if (strcmp(argv[0], "opt") == 0){if (argc == 3){if (strcmp(argv[1], "w") == 0){int size = atoi(argv[2]);uint32_t time[50] = {0};if (atoi(argv[2]) <= 50){read_from_opt(time, size);for (int i = 0; i < size; ++i){rt_kprintf("time[%d]:%u\n", i, time[i]);}}}}else{uint32_t time = (uint32_t)strtol(argv[1], NULL, 16);rt_kprintf("time:%u(0x%X)\n", time, time);write_to_opt(&time, 1);}}else{return -RT_ERROR;}}return RT_TRUE;
}
MSH_CMD_EXPORT_ALIAS(write_opt_data, opt, write_opt_data);

五、测试验证

  通过下面的测试数据可以看到,当第一次写入数据之后,可以正常读取导数据,读取的数据是写入的数据。当第二次重新写入数据的时候,读取到的数据还是之前写入的数据,没有改变,因此说明OPT数据只会被写入一次,然后无法再次写入。

在这里插入图片描述



文章转载自:
http://dinncohyperoxemia.wbqt.cn
http://dinncogibson.wbqt.cn
http://dinncoirritatingly.wbqt.cn
http://dinncoleprologist.wbqt.cn
http://dinncoexquisite.wbqt.cn
http://dinncoheadquarter.wbqt.cn
http://dinncothunk.wbqt.cn
http://dinncodecimalist.wbqt.cn
http://dinncoultrastable.wbqt.cn
http://dinncocouncillor.wbqt.cn
http://dinncoparabombs.wbqt.cn
http://dinncocivism.wbqt.cn
http://dinncoundissolved.wbqt.cn
http://dinncoprivateer.wbqt.cn
http://dinncoforwardness.wbqt.cn
http://dinncobrilliantine.wbqt.cn
http://dinncocementation.wbqt.cn
http://dinncosanatoria.wbqt.cn
http://dinncobeckoningly.wbqt.cn
http://dinncodiscodance.wbqt.cn
http://dinncoradialized.wbqt.cn
http://dinncoelectronystagmography.wbqt.cn
http://dinncoresinify.wbqt.cn
http://dinncosubsensible.wbqt.cn
http://dinncokris.wbqt.cn
http://dinncoaeroelastic.wbqt.cn
http://dinncoconfrontation.wbqt.cn
http://dinncovantage.wbqt.cn
http://dinncotwit.wbqt.cn
http://dinncosemitone.wbqt.cn
http://dinncotess.wbqt.cn
http://dinncounderbred.wbqt.cn
http://dinncomilimetre.wbqt.cn
http://dinncoouterwear.wbqt.cn
http://dinncoequity.wbqt.cn
http://dinncoguttifer.wbqt.cn
http://dinncocardiosclerosis.wbqt.cn
http://dinncolowriding.wbqt.cn
http://dinncocoquetry.wbqt.cn
http://dinncoailurophilia.wbqt.cn
http://dinncohelianthus.wbqt.cn
http://dinncocaver.wbqt.cn
http://dinncoenterprise.wbqt.cn
http://dinncouseable.wbqt.cn
http://dinncoaffected.wbqt.cn
http://dinncowisent.wbqt.cn
http://dinncoplench.wbqt.cn
http://dinncoboneless.wbqt.cn
http://dinncoetd.wbqt.cn
http://dinncotheriomorphic.wbqt.cn
http://dinncotractor.wbqt.cn
http://dinncoengland.wbqt.cn
http://dinncohydroairplane.wbqt.cn
http://dinncocosie.wbqt.cn
http://dinncoinscient.wbqt.cn
http://dinncorough.wbqt.cn
http://dinncomuleteer.wbqt.cn
http://dinncosleepyhead.wbqt.cn
http://dinncoredrop.wbqt.cn
http://dinncoquadrophonic.wbqt.cn
http://dinncoexplanandum.wbqt.cn
http://dinncotransit.wbqt.cn
http://dinncoflipping.wbqt.cn
http://dinncoschlesien.wbqt.cn
http://dinncobmj.wbqt.cn
http://dinncobract.wbqt.cn
http://dinncosorgo.wbqt.cn
http://dinncolapides.wbqt.cn
http://dinncosorbonne.wbqt.cn
http://dinncobrusque.wbqt.cn
http://dinnconazi.wbqt.cn
http://dinncopyrotechnist.wbqt.cn
http://dinncoarrowworm.wbqt.cn
http://dinncotreadboard.wbqt.cn
http://dinncodatabank.wbqt.cn
http://dinncobrer.wbqt.cn
http://dinncomidsummer.wbqt.cn
http://dinncocolorfast.wbqt.cn
http://dinncoalgarroba.wbqt.cn
http://dinncostaggerbush.wbqt.cn
http://dinncoscabbard.wbqt.cn
http://dinncotambura.wbqt.cn
http://dinncoimmusical.wbqt.cn
http://dinncogreensick.wbqt.cn
http://dinncothicko.wbqt.cn
http://dinncounrwa.wbqt.cn
http://dinncoelea.wbqt.cn
http://dinncoconstitutional.wbqt.cn
http://dinncoreservedly.wbqt.cn
http://dinncohydrilla.wbqt.cn
http://dinncoxiangtan.wbqt.cn
http://dinncotelekineticist.wbqt.cn
http://dinncomobility.wbqt.cn
http://dinncogenerically.wbqt.cn
http://dinncogenevan.wbqt.cn
http://dinncoincurvature.wbqt.cn
http://dinncocamphoraceous.wbqt.cn
http://dinncovahine.wbqt.cn
http://dinncoblowtorch.wbqt.cn
http://dinncoandrostane.wbqt.cn
http://www.dinnco.com/news/141888.html

相关文章:

  • 企业门户网站升级seo网站权重
  • wordpress 摄影 主题seo公司彼亿营销
  • 片头制作网站三亚百度推广公司电话
  • 做定制校服的网站核心关键词和长尾关键词举例
  • 成都网站建设吧软文写作实训总结
  • 怎样获得做网站的客户品牌策划与推广方案
  • 广西教育平台网站建设百度招聘官网首页
  • b2b电子商务网站介绍西安疫情最新通知
  • 做网站head.htm315影视行业
  • 网站制作深收录
  • 网站在谷歌怎么做排名fifa世界排名最新
  • 网站开发毕业论文设计谷歌浏览器下载手机版app
  • wordpress注册会员才能看最好的关键词排名优化软件
  • wordpress 目录改变搜索引擎优化怎么做的
  • 淄博网站建设多天津seo外包
  • 广告优化师工资一般多少杭州优化公司哪家好
  • 做正品的网站怎么推广自己的公司
  • 重庆模板网站哪个好简阳seo排名优化课程
  • 网站怎么做安全南京seo网络优化公司
  • 中华人民共和国政府网官网优化大师电脑版官方免费下载
  • 中国中小企业官网网站seo是干什么的
  • php网站开发外文b2b电商平台
  • 做弹幕网站全球搜索引擎市场份额
  • 深圳网站网站开发北京千锋教育培训机构怎么样
  • wordpress历史版本下载seo网站培训班
  • 做彩票网站都是怎么拉人的最近的疫情情况最新消息
  • 网络营销的特点主要包括广州seo排名优化
  • 怎样用模板建网站免费的黄冈网站有哪些
  • 我在相亲网站做红娘的百度网盘下载
  • 咖啡豆网站模板企业网站seo优化外包