FLASH API 的配置
FLASH的配置步骤
-
将FLASH2812_API_v210.lib 添加到头文件中。
(2)将Flash281x_API_Config.h Flash281x_API_Library.h 两个头文件添加进include目录下。这两个头文件主要包含的是 FLASH_API函数的定义 状态返回的定义
本工程中将两个头文件合并为ALLdefine.h
-
配置API的频率
修改define.h 中CPU_RATE 来设置正确的CPU频率配置算法
-
在alldefine . h 中初始化 Flash_CPUScaleFactor 变量
这个变量具体的操作 除了赋值以外 可能在F2812_API_V210.Lib中进行,我们看不见。我们只能给这个FALSH API 全局变量进行赋值 如下图
在alldefine.h 中定义了这个API全局变量, 但是在downloader()函数中完成赋值。
如下面的两张图
(4)初始化PLLCR 寄存器
(5)初始化CALLBACK 函数指针 (这个可以补充进入指针的用法的文档中去)
在 alldef.h 头文件中 声明一个函数 用指向函数的指针变量
然后在downloader()函数中 将函数名字&flashcallbackfunction 赋给 指针变量 Flash_CallbackPtr.
Flashcallbackfunction() 函数 在downloader .c 中定义。见下面的三张图,
Flashcallbackfunction()函数的 作用是在 flash 烧写过程中 接收数据?
(6) 禁止中断和看门狗
在CodeStartBranch.asm 中禁止看门狗的写法
下面是汇编语言的写法
LB _c_int00 ? 是什么意思?
和以下用C编写的代码 是等价的
# define WDCR(volatile Uint16 *) 0X00007029 //WDCR
Asm ("EALLOW")
*WDCR=(*WDCR|0X0086); //禁止看门狗
Asm ("EDIS")
(7)将API 复制到RAM 区,为保证其正常运行,API需要在RAM 区中执行,
一般而言 API 函数保存在FLASH A 扇区,改扇区为保留, 需要在CMD文件中 为API 的源代码分配响应的空间
_Flash28_API_RunStart 是段 Flash28_API 运行的首地址 是全局变量
_Flash28_API_LoadStart 是段 Flash28_API 装载的首地址 是全局变量
_Flash28_API_LoadEnd 是段 Flash28_API 装载的结束地址 是全局变量
在alldef.h 中上面的三个全局变量进行声明 因为是在 cmd 文件中已经定义
所以在alldef.h 中 用extern 关键字修饰
函数的调用 在main 函数中 已经解锁以后
Memcopy 函数的定义