⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iap.c

📁 在LPC2368上实现的FFT程序
💻 C
字号:
#include <LPC23xx.H>
#include "iap.h"
unsigned int paramin[5]; // IAP 入口参数缓冲区
unsigned int paramout[2]; // IAP 出口参数缓冲区

/* 定义函数指针 */
/* 定义函数指针 */
void (*IAP_Entry)(unsigned int [],unsigned int []);
/******************************************************************************************
** 函数名称: SelSector
** 函数功能: IAP 操作缓冲区选择,代码为50。
** 入口参数: sec1 起始扇区
** sec2 终止扇区
** 出口参数: IAP 操作状态码
** IAP 返回值(paramout 缓冲区)
******************************************************************************************/
unsigned long SelSector(unsigned char sec1,unsigned char  sec2)
{
    IAP_Entry = (void(*)(unsigned int [],unsigned int []))IAP_ENTER_ADR;
    paramin[0] = IAP_SELECTOR; // 设置命令字
    paramin[1] = sec1; // 设置参数
    paramin[2] = sec2;
    (*IAP_Entry)(paramin,paramout); // 调用IAP 服务程序
    return(paramout[0]); // 返回状态码
}
/******************************************************************************************
** 函数名称: EraseSector
** 函数功能: 擦除扇区,命令代码52。
** 入口参数: sec1 起始扇区
** sec2 终止扇区
** 出口参数: IAP 操作状态码
** IAP 返回值(paramout 缓冲区)
******************************************************************************************/
unsigned long EraseSector(unsigned char sec1,unsigned char sec2)
{
    IAP_Entry = (void(*)(unsigned int [],unsigned int []))IAP_ENTER_ADR;
    paramin[0] = IAP_ERASESECTOR; // 设置命令字
    paramin[1] = sec1; // 设置参数
    paramin[2] = sec2;
    paramin[3] = IAP_FCCLK;
    (*IAP_Entry)(paramin,paramout); // 调用IAP 服务程序
    return(paramout[0]); // 返回状态码
}
/******************************************************************************************
** 函数名称: RamToFlash
** 函数功能: 复制RAM 的数据到FLASH,命令代码51。
** 入口参数: dst 目标地址,即FLASH 起始地址,以256 字节为分界
** src 源地址,即RAM 地址,地址必须字对其
** no 复制字节个数,为256/512/1024/4096
** 出口参数: IAP 操作状态码
** IAP 返回值(paramout 缓冲区)
******************************************************************************************/
unsigned long RamToFlash(unsigned long dst, unsigned long src, unsigned long no)
{
   IAP_Entry = (void(*)(unsigned int [],unsigned int []))IAP_ENTER_ADR;
    paramin[0] = IAP_RAMTOFLASH; //设置命令字
    paramin[1] = dst; //设置参数
    paramin[2] = src;
    paramin[3] = no;
    paramin[4] = IAP_FCCLK;
    (*IAP_Entry)(paramin,paramout); // 调用IAP 服务程序
    return(paramout[0]); //返回状态码
}
/******************************************************************************************
** 函数名称: Compare
** 函数功能: 校验数据,命令代码56。
** 入口参数: dst 目标地址,即RAM/FLASH 起始地址,地址必须字对齐
** src 源地址,即RAM/RAM 地址,地址必须字对齐
** no 比较字节个数,必须能被4 整除
** 出口参数: IAP 操作状态码
** IAP 返回值(paramout 缓冲区)
******************************************************************************************/
unsigned long Compare(unsigned long dst, unsigned long src, unsigned long no)
{
   IAP_Entry = (void(*)(unsigned int [],unsigned int []))IAP_ENTER_ADR;
   paramin[0] = IAP_COMPARE; // 设置命令字
   paramin[1] = dst; // 设置参数
   paramin[2] = src;
   paramin[3] = no;
   (*IAP_Entry)(paramin,paramout); // 调用IAP 服务程序
   return(paramout[0]); // 返回状态码
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -