资源简介
基于Ymodem的STM32F4串口IAP,已测试成功。
代码片段和文件信息
#include “stm32_flash.h“
#include “stm32f4xx.h“
#include “stm32f4xx_flash.h“
#include
#define SECTOR_MAX_NUMBER 23u
static const uint32_t mapTable[][2] =
{
{ADDR_FLASH_SECTOR_0FLASH_Sector_0}
{ADDR_FLASH_SECTOR_1FLASH_Sector_1}
{ADDR_FLASH_SECTOR_2FLASH_Sector_2}
{ADDR_FLASH_SECTOR_3FLASH_Sector_3}
{ADDR_FLASH_SECTOR_4FLASH_Sector_4}
{ADDR_FLASH_SECTOR_5FLASH_Sector_5}
{ADDR_FLASH_SECTOR_6FLASH_Sector_6}
{ADDR_FLASH_SECTOR_7FLASH_Sector_8}
{ADDR_FLASH_SECTOR_9FLASH_Sector_9}
{ADDR_FLASH_SECTOR_10FLASH_Sector_10}
{ADDR_FLASH_SECTOR_11FLASH_Sector_11}
{ADDR_FLASH_SECTOR_12FLASH_Sector_12}
{ADDR_FLASH_SECTOR_13FLASH_Sector_13}
{ADDR_FLASH_SECTOR_14FLASH_Sector_14}
{ADDR_FLASH_SECTOR_15FLASH_Sector_15}
{ADDR_FLASH_SECTOR_16FLASH_Sector_16}
{ADDR_FLASH_SECTOR_17FLASH_Sector_17}
{ADDR_FLASH_SECTOR_18FLASH_Sector_18}
{ADDR_FLASH_SECTOR_19FLASH_Sector_19}
{ADDR_FLASH_SECTOR_20FLASH_Sector_20}
{ADDR_FLASH_SECTOR_21FLASH_Sector_21}
{ADDR_FLASH_SECTOR_22FLASH_Sector_22}
{ADDR_FLASH_SECTOR_23FLASH_Sector_23}
};
/********************************
//函数名称:stm32_flashGetFlashSector
//函数功能:获取地址所在的扇区
//函数参数: addr flash地址
//函数返回:正确地址所在的扇区操作码 0xffff 参数地址不是有效的FLASH地址
*********************************/
static uint16_t stm32_flashGetFlashSector(uint32_t addr)
{
uint16_t i = 0;
if ((addr < STM32_FLASH_base) || (addr > STM32_FLASH_base + FLASH_SIZE)) return 0xffff;
else{
for (i = 0;i {
if (addr < mapTable[i+1][0])
return mapTable[i][1];
}
return mapTable[i][1];
}
}
/********************************
//函数名称:stm32_flashSectorSize
//函数功能:获取指定扇区的大小
//函数参数:number 指定的扇区编号 0-23
//函数返回:正确返回扇区大小,错误参数超出指定大小返回-1
********************************/
static int32_t stm32_flashSectorSize(uint16_t number)
{
number = number%12;
if (number <= 3u )
return 0x4000;
else if ((4u == number) )
return 0x10000;
else if (((number >=5u )&& (number < 12u)) )
return 0x20000;
else
return -1;
}
static uint16_t stm32_flashSectorNmuber(uint16_t code)
{
uint16_t i = 0;
for ( i = 0; i< SECTOR_MAX_NUMBER+1;i++)
{
if (mapTable[i][1]==code)
return i;
}
return 0xff;
}
/***************************************
//函数名称:STMFLASH_Erase
//函数功能:从指定的扇区首地址开始,擦除指定大小的FLASH空间
//函数参数:startAddr :需要擦除的flash空间的首地址(必须为扇区的首地址)
size: 需要擦除的flash空间大小(单位字节)
//函数返回:0 成功 -1 非法地址 -2 指定擦除区域超出flash的空间大小 -3擦除失败
***************************************/
int32_t stm32_flashErase(uint32_t startAddruint32_t size )
{
FLASH_Status status = FLASH_COMPLETE;
uint32_t addr = startAddr;
uint32_t endAddr = startAddr + size;
FLASH_DataCacheCmd(DISABLE);//FLASH擦除期间必须禁止数
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-08-02 07:18 IAP_BootLaoder\
目录 0 2016-08-03 07:10 IAP_BootLaoder\APPLIB\
文件 4899 2016-08-03 07:10 IAP_BootLaoder\APPLIB\stm32_flash.c
文件 3017 2016-08-03 00:10 IAP_BootLaoder\APPLIB\stm32_flash.h
目录 0 2016-08-01 23:26 IAP_BootLaoder\CORE\
文件 109142 2014-07-17 21:52 IAP_BootLaoder\CORE\core_cm4.h
文件 22735 2014-07-17 21:52 IAP_BootLaoder\CORE\core_cm4_simd.h
文件 17146 2014-07-17 21:52 IAP_BootLaoder\CORE\core_cmFunc.h
文件 20513 2014-07-17 21:52 IAP_BootLaoder\CORE\core_cmInstr.h
文件 29605 2014-08-02 00:12 IAP_BootLaoder\CORE\startup_stm32f40_41xxx.s
目录 0 2016-08-01 23:26 IAP_BootLaoder\FWLIB\
目录 0 2016-08-01 23:26 IAP_BootLaoder\FWLIB\inc\
文件 6924 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\misc.h
文件 32880 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_adc.h
文件 27318 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_can.h
文件 2416 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_crc.h
文件 14481 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_cryp.h
文件 14946 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_dac.h
文件 4296 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_dbgmcu.h
文件 12977 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_dcmi.h
文件 28882 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_dma.h
文件 19692 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_dma2d.h
文件 8012 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_exti.h
文件 24467 2014-08-04 22:05 IAP_BootLaoder\FWLIB\inc\stm32f4xx_flash.h
文件 3275 2014-08-04 22:05 IAP_BootLaoder\FWLIB\inc\stm32f4xx_flash_ramfunc.h
文件 44924 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_fmc.h
文件 27181 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_fsmc.h
文件 23548 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_gpio.h
文件 10084 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_hash.h
文件 31939 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_i2c.h
文件 4323 2014-08-01 23:18 IAP_BootLaoder\FWLIB\inc\stm32f4xx_iwdg.h
............此处省略230个文件信息
相关资源
- 野火STM32F4开发板适配TouchGFX
- STM32F427 USB VCP DCD官方例程移植程序
- stm32f4摄像头数据上传onenet平台
- stm32f4xx_dsp_stdperiph_lib_um库函数手册
- stm32F4固件库
- STM32F4开发指南-库函数版本
- stm32f4摄像头数据转bmp上传onenet.zip
- STM32F407中文手册(完全版) 高清完整
-
MusicPla
yer - STM32F4 HAL库函数手册(英文版)
- stm32f407快速傅里叶变缓
- apple lighting iap2 sample source
- STM32F407中文手册(完全版) 高清完整
- 安富莱STM32-V5开发板资料
- ucosii在STM32F407芯片上的移植代码完整
- STM32F407
- 中移物联网ONENET移植STM32F4代码及资料
- STM32F407驱动步进电机S型加减速.7z
- STM32F407ZET6数据手册-中文参考手册以及
- STM32F407_HS.zip
- STM32F407+FREERTOS+LWIP+RMII_KSZ8031+SDIO_FATF
- STM32F4摄像头OV7670测试工程
- STM32F4x7+freertos+lwip+ssl+MQTT(MDK5)源码
- 基于HAL库的ADC+DMA程序——STM32F429
- EmWin计算器_使用栈_带括号_适用于安富
-
SurfaceView+MediaPla
yer视频播放器支持选 - stm驱动L298N
- stm32-串口开发工具软件(含超级终端
- Keil.STM32F4xx_DFP.1.0.8 支持包.rar
- INRIAP数据库
评论
共有 条评论