zoukankan      html  css  js  c++  java
  • STM32:片上Flash 操作

    之前IAP时候记录过一些,今天对特定地方写又加深了印象,写与擦除都需要先unclock

    1 //读取指定地址的半字(16位数据)
    2 //faddr:读地址(此地址必须为2的倍数!!)
    3 //返回值:对应数据.
    4 u16 STMFLASH_ReadHalfWord(u32 faddr)
    5 {
    6     return *(vu16*)faddr; 
    7 }
    STMFLASH_ReadHalfWord
    1 //读取指定地址的字(32位数据)
    2 //faddr:读地址(此地址必须为2的倍数!!)
    3 //返回值:对应数据.                              
    4 u32 STMFLASH_ReadOneWord(u32 faddr)
    5 {
    6     return *(vu32*)faddr; 
    7 }
    STMFLASH_ReadOneWord
     1 //从指定地址开始读出指定长度的数据
     2 //ReadAddr:起始地址
     3 //pBuffer:数据指针
     4 //NumToWrite:半字(16位)数
     5 void STMFLASH_Read(u32 ReadAddr,u16 *pBuffer,u16 NumToRead)       
     6 {
     7     u16 i;
     8     for(i=0;i<NumToRead;i++)
     9     {
    10         pBuffer[i]=STMFLASH_ReadHalfWord(ReadAddr);//读取2个字节.
    11         ReadAddr+=2;//偏移2个字节.    
    12     }
    13 }
    STMFLASH_Read
     1 /从指定地址开始读出指定长度的数据
     2 //ReadAddr:起始地址
     3 //pBuffer:数据指针
     4 //NumToWrite:字(32位)数
     5 void STMFLASH_Read_Word(u32 ReadAddr,u32 *pBuffer,u32 NumToRead)       
     6 {
     7     u32 i;
     8     for(i=0;i<NumToRead;i++)
     9     {
    10         pBuffer[i]=STMFLASH_ReadOneWord(ReadAddr);//读取4个字节.
    11         ReadAddr+=4;//偏移4个字节.    
    12     }
    13 }
    STMFLASH_Read_Word
     1 //不检查的写入
     2 //WriteAddr:起始地址
     3 //pBuffer:数据指针
     4 //NumToWrite:半字(16位)数   
     5 void STMFLASH_Write_NoCheck(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite)   
     6 {                       
     7     u16 i;
     8     FLASH_Unlock();    
     9     for(i=0;i<NumToWrite;i++)
    10     {
    11         FLASH_ProgramHalfWord(WriteAddr,pBuffer[i]);
    12         WriteAddr+=2;//地址增加2.
    13     }  
    14    FLASH_Lock();//上锁 
    15 
    16 } 
    STMFLASH_Write_NoCheck
     1 //不检查的写入
     2 //WriteAddr:起始地址
     3 //pBuffer:数据指针
     4 //NumToWrite:半字(16位)数   
     5 void STMFLASH_Write_NoCheck_OneWord(u32 WriteAddr,u32 *pBuffer,u16 NumToWrite)   
     6 {                       
     7     u16 i;
     8     FLASH_Unlock();    
     9     for(i=0;i<NumToWrite;i++)
    10     {
    11         FLASH_ProgramWord(WriteAddr,pBuffer[i]);
    12         WriteAddr+=4;//地址增加2.
    13     }
    14     FLASH_Lock();//上锁  
    15 } 
    STMFLASH_Write_NoCheck_OneWord
    1    FLASH_Unlock();    
    2    FLASH_ErasePage(u32 address);
    3    FLASH_Lock();
    erase one page
  • 相关阅读:
    微信开放平台:OpenAPI、云开发与基础管理能力升级
    腾讯刘颖:从容器到低代码,腾讯云原生技术演进历程
    十年老站长心声:我为什么选择把 Hexo 网站迁移到 Webify
    腾讯云发布微搭生态开放计划,与合作伙伴携手共创产业未来
    SQL Server附加数据库出现错误5123的正确解决方法
    数据分页获取(二)
    Select语句
    数据分页获取(一)
    SQL Server中行转列原理
    QT实现Linux下系统监控小工具之二
  • 原文地址:https://www.cnblogs.com/wwjdwy/p/3643660.html
Copyright © 2011-2022 走看看