当前位置:首页 > 单片机 > 单片机
[导读] 对于在应用编程( IAP) 来说,应当通过寄存器 r0 中的字指针指向包含命令代码和参数的存储器(RAM)来调用 IAP 程序。 IAP 命令的结果返回到寄存器 r1 所指向的结果表( resulttable)。用户可通过传递

对于在应用编程( IAP) 来说,应当通过寄存器 r0 中的字指针指向包含命令代码和参数的存储器(RAM)来调用 IAP 程序。 IAP 命令的结果返回到寄存器 r1 所指向的结果表( resulttable)。用户可通过传递寄存器 r0 和 r1 中的相同指针来重新使用命令表以获取结果。参数表应当大到足够存放所有的结果以防结果的数目大于参数的数目。参数传递的过程如下图所示。


参数和结果的数目根据 IAP 命令而有所不同。参数的最大数目为 5, 被传递给“将RAM 内容复制到 Flash”命令。结果的最大数目为 2,由“扇区查空”命令返回。命令处理程序在接收到一个未定义的命令时发送状态代码 INVALID_COMMAND。 IAP 程序是 thumb代码,位于地址 0x7FFF FFF0 处。

IAP 功能可用下面的 C 代码来调用。定义 IAP 程序的入口地址。由于 IAP 地址的第 0 位是 1,因此,当程序计数器转移到该地址时会引起 Thumb 指令集的变化。下面附上IAP函数代码:


  1. /**************************************************

  2. 名称:宏定义(Flash操作)

  3. **************************************************/

  4. #defineIAP_LOCATION0x7FFFFFF1//定义IAP程序的入口地址

  5. #defineIapGetAddr(addr)(volatileuint16*)(0x80000000|(addr


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭