社区导航

 
查看: 139|回复: 1

[经验] 简单说下IAP

[复制链接]

1068

TA的帖子

4

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2017-3-21 09:56:17 | 显示全部楼层 |阅读模式
  
[C] 纯文本查看 复制代码
#define                PAGE_ADDR                                (0x08000000 + 63 * 1024)
  
[C] 纯文本查看 复制代码
uint8 MemReadByte(uint16 *data,uint16 num) 
{
        uint16 *temp_addr = (uint16 *)PAGE_ADDR;
        
        while(num --)
        {
                *data ++ = *temp_addr ++;
        }
                                                                                                        
        return 1;                                                                                                        
}
  
[C] 纯文本查看 复制代码
uint8 MemWriteByte(uint16 *data,uint16 num) 
{
        FLASH_Status temp_stat;
        uint32 temp_addr = PAGE_ADDR;
                
        FLASH_Unlock();                                                                                                        // Flash解锁,允许操作相关的寄存器
        temp_stat = FLASH_ErasePage(PAGE_ADDR);                                                        // 擦出制定的页
        
        if(temp_stat != FLASH_COMPLETE)
        {
                FLASH_Lock();
                return 0;
        }
        
        while(num --)
        {
                temp_stat = FLASH_ProgramHalfWord(temp_addr,*data);
                if(temp_stat != FLASH_COMPLETE)
                {
                        FLASH_Lock();
                        return 0;
                }
        
                temp_addr += 2;
                data++;
        }
        
        FLASH_Lock();        
        return 1;
}
[C] 纯文本查看 复制代码
#include "app_cfg.h"                                        

uint16        write_buf[10] = {0,1,2,3,4,5,6,7,8,9};

int main(void) 
{ 
        uint16 cnt;
                
           STM32Init();  
        
        MemWriteByte(write_buf,10);  
        for(cnt = 0;cnt < 10;cnt ++)
        {
                write_buf[cnt] = 11;
        }
        MemReadByte(write_buf,10); 
         
    while(1)                                                                          
    {
        ;        
    }  
} 


呵 先用别人的代码来开门见山,看的懂的一眼就知道这段代码是干嘛的,看不懂的,我这就简单介绍下,这是一段动态操作stm32内部flash的程序,内部flash,不仅仅是作为程序的烧录,也可以作为一些少量且重要的信息的动态存储,放心,操作得当,掉电不丢失。(注意,添加官方的flash头文件)

正是因为程序在运行时可以动态的擦除自身的flash,才有了这么多的IAP。(这句话,说的自己都有点含糊,你们就将就的看吧),程序是最好的老师,我也不多说废话,收集了一些IAP的例程。

串口IAP:
   各大开发板的例程都有,并且有见解 就不分享了

U盘IAP:
   U盘IAP.rar (914.02 KB, 下载次数: 9)
天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友

回复

使用道具 举报

101

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 7 天前 | 显示全部楼层
不错,感谢分享

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-3-29 04:01 , Processed in 0.225067 second(s), 15 queries , Redis On.

快速回复 返回顶部 返回列表
关闭