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

视频网站中滑动列表怎么做的百度seo公司报价

视频网站中滑动列表怎么做的,百度seo公司报价,企业外贸网站建设方案,房网操作顺序 先解锁Flash,再擦除片区,再写入,写完了别忘了加锁。 HAL_FLASH_Unlock(); HAL_FLASHEx_Erase(); HAL_FLASH_Program(); HAL_FLASH_Lock();擦除操作 首先有个问题,我们为什么要擦除,不能直接覆写吗&#xf…

操作顺序

先解锁Flash,再擦除片区,再写入,写完了别忘了加锁。

HAL_FLASH_Unlock();
HAL_FLASHEx_Erase();
HAL_FLASH_Program();
HAL_FLASH_Lock();

擦除操作

首先有个问题,我们为什么要擦除,不能直接覆写吗?答案是不能!!!。Flash存储器是一种非易失性存储器,其存储单元在未编程的时候处于1状态(对于Nor Flash,通常擦除后为全1),写操作是将某些比特位变为0,而只有擦除操作才能将位从0变为1

typedef struct {uint32_t TypeErase;    // 擦除类型uint32_t Banks;        // 指定操作的目标 Bankuint32_t Sector;       // 起始扇区号uint32_t NbSectors;    // 要擦除的扇区数量uint32_t VoltageRange; // 工作电压范围
} FLASH_EraseInitTypeDef;HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError);
TypeErase :指定要执行的擦除操作类型。

可选值

  • FLASH_TYPEERASE_SECTORS:擦除指定扇区(最常用)
  • FLASH_TYPEERASE_MASSERASE:整片擦除(全芯片擦除)
  • FLASH_TYPEERASE_PAGES:按页擦除(某些系列如 STM32L0/L1)
Banks :目标存储区,指定要操作的 Flash Bank(存储区)

可选值

  • FLASH_BANK_1:操作 Bank1
  • FLASH_BANK_2:操作 Bank2
  • FLASH_BANK_BOTH:同时操作两个 Bank

注意事项

  • 仅对支持多 Bank 的芯片有效(如 STM32F4/F7/H7)
  • 单 Bank 芯片固定使用 FLASH_BANK_1
Sector :指定擦除操作的起始扇区

取值范围

  • FLASH_SECTOR_0FLASH_SECTOR_11(具体取决于芯片型号)
  • 不同芯片的扇区划分不同:
    • STM32F4:扇区0-3(16KB), 扇区4(64KB), 扇区5-11(128KB)
    • STM32F7:扇区0-7(32KB), 扇区8-11(128KB)
    • STM32H7:扇区0-7(128KB), 扇区8(256KB)
NbSectors :指定要连续擦除的扇区数量

注意事项

  • 必须大于0
  • 扇区必须连续(不能跳过中间扇区)
  • 最大数量受芯片实际扇区数限制
VoltageRange:指定芯片当前工作电压范围,影响编程时间和精度

可选值

  • FLASH_VOLTAGE_RANGE_1:1.7V - 2.1V
  • FLASH_VOLTAGE_RANGE_2:2.1V - 2.7V
  • FLASH_VOLTAGE_RANGE_3:2.7V - 3.6V(最常用)
  • FLASH_VOLTAGE_RANGE_4:2.7V - 3.6V(特定芯片)
void erase_flash_sectors(uint32_t start_sector, uint32_t num_sectors) {HAL_FLASH_Unlock(); // 解锁FlashFLASH_EraseInitTypeDef erase_init;uint32_t sector_error = 0;// 配置擦除参数erase_init.TypeErase = FLASH_TYPEERASE_SECTORS;erase_init.Banks = FLASH_BANK_1; // F407系列只有Bank1erase_init.Sector = FLASH_SECTOR_11;erase_init.NbSectors = 1;erase_init.VoltageRange = FLASH_VOLTAGE_RANGE_3;// 执行擦除if (HAL_FLASHEx_Erase(&erase_init, &sector_error) != HAL_OK) {// 错误处理if (sector_error != 0xFFFFFFFF) {// sector_error包含失败扇区号Error_Handler();}}HAL_FLASH_Lock(); // 重新锁定Flash
}

写入操作

HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
参数含义可选值/要求
TypeProgram指定编程数据类型宽度FLASH_TYPEPROGRAM_BYTE(8位) FLASH_TYPEPROGRAM_HALFWORD(16位) FLASH_TYPEPROGRAM_WORD(32位) FLASH_TYPEPROGRAM_DOUBLEWORD(64位)
Address写入的目标 Flash 地址必须按数据类型对齐(如32位写入需4字节对齐)
Data要写入的数据(实际使用时会根据类型截断)最大支持64位,超宽数据需分多次写入
void write_word(uint32_t address, uint32_t data) {HAL_FLASH_Unlock();  // 解锁Flash__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS);  // 清除错误标志// 执行写入HAL_StatusTypeDef status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, (uint64_t)data);HAL_FLASH_Lock();  // 重新上锁if (status != HAL_OK) {uint32_t error = HAL_FLASH_GetError();Error_Handler(error);}
}// 调用示例
write_word(0x080E0000, 0x12345678);  // 向扇区5起始地址写入数据

读取操作

读取操作很简单,没有调用函数,直接按照地址取值即可。

// 读取验证
uint32_t read_val = *(__IO uint32_t*)address;
if (read_val != expected_val) {// 检查地址/擦除状态
}
http://www.dtcms.com/a/402474.html

相关文章:

  • 做企业网站能赚钱吗?网上免费开店怎么开
  • 网站架构变迁淘宝开网站建设店铺分析
  • 邢台seo一站式网站在线压缩
  • 青岛市城市建设管理局网站上谷网络网站建设
  • 用php做网站流程能下载各种应用的软件
  • 淘宝网站建设违规吗软文一般发布在哪些平台
  • 深圳网站建设力荐上榜网络nginx搭建和WordPress
  • 科技公司网站版面设计安徽省城乡与住房建设厅网站
  • 用asp做的网站打开页面很慢小而美企业网站建设
  • 郑州手机端建站模板网站开发风险分析
  • 有意思网站推荐网页设置怎么设置
  • 网站建设_网站设计 app制作百度大数据官网入口
  • 国外做网站公司能赚钱南昌互联网公司排名
  • vs2010网站开发示例网站开发需要学习
  • 免费空间+网站空间+虚拟主机wordpress 全屏浮动
  • 网站更改域名网站建设安全规范
  • 网站分页需要前端做还是后端做彩票网站是违法
  • 阿里巴巴建设网站首页阿里wordpress镜像源码
  • 哪里有制作网站服务自己创业网站开发
  • 钢材原材料东莞网站建设好的网站建设公司
  • 私人小工厂做网站价格注册域名查询网站官网
  • 网赌赢了钱被网站黑了需要怎么做中职教材 网站建设
  • 网站开发包含哪些做一个论坛网站多少钱
  • 东莞企业网站建设预算大概多少合肥网络科技有限公司
  • 一个做外汇的网站叫熊猫什么的滕州建设局网站
  • 福州营销网站建设模板现代简约设计风格说明
  • 阿芹网站建设六安招聘网官网
  • 苏州手机网站用c语言可以做网站吗
  • 金融业反洗钱培训网站手机网站建设报价
  • 怎么建设企业网站济南哪里做网站好