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
  • 相关阅读:
    架构师之路(4)详解面向对象 王泽宾 (转)
    输出螺旋矩阵(一)
    输出螺旋矩阵(三)
    excel sheet中数据的快速复制
    计算数组的维数
    不绑定记录集获取datagrid某行某列的内容
    API判断数组是否为空
    将某网页的某框架内容显示在WEBBROWSER中
    输出螺旋矩阵(二)
    快速删除一个包含文件和子文件夹的文件夹
  • 原文地址:https://www.cnblogs.com/wwjdwy/p/3643660.html
Copyright © 2011-2022 走看看