资源简介
stm32f407IAP升级源码,先按下按键(在PA0)再上电就进入升级固件模式,再按一次按键则将SD卡中的IAP.bin拷贝到flash中并运行。上电时不按按钮会直接运行flash中现有的程序。
代码片段和文件信息
#include
#include “Bootloader.h“
#include “delay.h“
#include “LED.h“
#include “beep.h“
#include “exfuns.h“
#include “diskio.h“
#include “ff.h“
#include “lcd.h“
#include “stmflash.h“
#include “iap.h“
typedef void (*fun)(void); //定义一个函数类型的参数.
fun AppStart;
u8 Receive_dat_buffer[STM_PAGE_SIZE]; //数据接收缓存数组
/****************************
函数名 :Jump2App
功 能:从Bootloader跳转到用户APP程序地址空间
入口参数:Addr,用户APP的起始执行地址
出口参数:无
返回值 :无
*****************************/
void Jump2App(u32 Addr)
{
if(((*(vu32*)Addr)&0x2FFE0000) == 0x20000000) //检查栈顶地址是否合法.
{
AppStart = (fun)(*(vu32*)(Addr+4)); //用户代码区第二个字为程序开始地址(复位地址)
AppStart(); //跳转到APP.
}
}
/******************************
函数名 :FirmwareUpdate
功 能:固件升级函数
入口参数:无
出口参数:无
返回值 :无
*******************************/
void FirmwareUpdate(void)
{
FIL file_bin;
u8 i=0;
u8 res;
u16 br;
u16 readlen;
u32 addrx;
u32 Receive_data=0; //计算接收的总数据数
u32 file_size=0; //文件size
u8 percent=0; //固件升级的百分比
/*查找是否存在要升级的BIN文件*/
res = f_open(&file_bin “IAP.bin“ FA_OPEN_EXISTING | FA_READ);
//res = f_open(&file_bin “TEST.bin“ FA_OPEN_EXISTING | FA_READ);
file_size=f_size(&file_bin); //读取的文件大小Byte
printf(“读取的文件大小为:%dByte\r\n“file_size);
if(res!=FR_OK) return;
addrx=FLASH_APP1_ADDR;
/*执行主要的IAP功能*/
printf(“开始更新固件...\r\n“);
LCD_ShowString(301303102424“Firmware Updating...“);
while(1)
{
/*每次读取2K的数据到内存缓冲区buffer*/
res = f_read(&file_bin Receive_dat_buffer STM_PAGE_SIZE (UINT*)&br);
i++;
readlen=br;
Receive_data+=br; //读取的总字节数
if (res || br == 0)
{
break;
}
iap_write_appbin(addrxReceive_dat_bufferreadlen);//将读取的数据写入Flash中
addrx+=STM_PAGE_SIZE;//偏移2048 512*4=2048
}
delay_ms(1500);
// BEEP_ON();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2198 2019-04-05 17:17 Bootloader - 副本\BOOTLOADER\Bootloader.c
文件 267 2015-09-29 21:57 Bootloader - 副本\BOOTLOADER\Bootloader.h
文件 109142 2014-07-17 21:52 Bootloader - 副本\CORE\core_cm4.h
文件 22735 2014-07-17 21:52 Bootloader - 副本\CORE\core_cm4_simd.h
文件 17146 2014-07-17 21:52 Bootloader - 副本\CORE\core_cmFunc.h
文件 20513 2014-07-17 21:52 Bootloader - 副本\CORE\core_cmInstr.h
文件 29605 2014-08-02 00:12 Bootloader - 副本\CORE\startup_stm32f40_41xxx.s
文件 3248 2014-01-15 00:31 Bootloader - 副本\FATFS\doc\css_e.css
文件 3661 2014-01-15 00:31 Bootloader - 副本\FATFS\doc\css_j.css
文件 1063 2013-09-18 21:47 Bootloader - 副本\FATFS\doc\img\app1.c
文件 1597 2013-10-18 21:41 Bootloader - 副本\FATFS\doc\img\app2.c
文件 3811 2014-01-13 20:56 Bootloader - 副本\FATFS\doc\img\app3.c
文件 10365 2014-01-07 15:10 Bootloader - 副本\FATFS\doc\img\app4.c
文件 1414 2011-09-02 22:10 Bootloader - 副本\FATFS\doc\img\f1.png
文件 1458 2007-02-10 03:12 Bootloader - 副本\FATFS\doc\img\f2.png
文件 1039 2007-02-10 03:12 Bootloader - 副本\FATFS\doc\img\f3.png
文件 2335 2008-01-05 20:27 Bootloader - 副本\FATFS\doc\img\f4.png
文件 2479 2008-01-05 20:27 Bootloader - 副本\FATFS\doc\img\f5.png
文件 1436 2010-08-21 10:13 Bootloader - 副本\FATFS\doc\img\f6.png
文件 11388 2013-05-12 12:31 Bootloader - 副本\FATFS\doc\img\f7.png
文件 11421 2014-02-19 22:38 Bootloader - 副本\FATFS\doc\img\funcs.png
文件 2401 2009-03-20 21:57 Bootloader - 副本\FATFS\doc\img\la
文件 2379 2009-06-13 21:48 Bootloader - 副本\FATFS\doc\img\la
文件 7932 2013-12-27 12:20 Bootloader - 副本\FATFS\doc\img\modules.png
文件 19068 2008-10-18 19:31 Bootloader - 副本\FATFS\doc\img\rwtest.png
文件 8153 2010-09-13 10:55 Bootloader - 副本\FATFS\doc\img\rwtest2.png
文件 3011 2009-06-15 00:03 Bootloader - 副本\FATFS\doc\img\rwtest3.png
文件 5352 2014-01-15 00:31 Bootloader - 副本\FATFS\doc\updates.txt
文件 3685 2014-05-15 17:20 Bootloader - 副本\FATFS\exfuns\exfuns.c
文件 1417 2014-05-15 17:20 Bootloader - 副本\FATFS\exfuns\exfuns.h
............此处省略426个文件信息
相关资源
- 基于STM32F4x9的LCD显示
- VS1053B编解码器的VDR分布式声音采集卡
- stm32的DAC播放音乐文件
- STM32+TMC5160代码电路图.rar
- 基于STM32的深海钻机甲板控制系统
- 基于IAP15F2K61S2单片机的多路温度巡检
- stm32f103.SchDoc
- STM32F103 USART+DMA
- DMA+stm32 407.zip
- 4_USART串口通信(空闲中断+DMA.zip
- stm32f105-usart-DMA收发demo
- STM32F042F6P6 Uart12DMA;发送中断接收
- 基于STM32的嵌入式双目图像采集系统设
- 基于STM32F103C8单片机的晶联讯电子JL
- 基于STM32的温湿度检测系统实现
- stm32F4+w5300
- 14284969_《STM32单片机应用与全案例实践
-
ST-li
nk-V2的SWD仿真使用方法.docx - IAP15f2k61s2
- 安富莱STM32开发板资料
- STM32F103实现OV7670摄像头显示
- STM32F207学习板例程
- STM32F103VCT6TR - High-density performance lin
- STM32 SRAM启动的 KeiL 配置
- STM32的IAP-Bootloader程序
- STM32例程之Bootloader
- stm32f103 虚拟U盘,调试成功的
- 基于stm32F103vct6的SD卡FATFS文件系统移植
- STM32F030从机中断接收的iic代码,附带
- FreeModbus_Slave+STM32F407+USART2代码亲测可
评论
共有 条评论