|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2012-11-30 17:01:01
|
显示全部楼层
qzxy0927 发表于 2012-11-30 15:45 ![](static/image/common/back.gif)
楼主,想做一个MDK工程,不知道是否有难度,要怎么样移植 呢?
应该没难度,这是在裸机上的程序。我MDK以前用过一次,不太熟悉。但这没关系,只要你熟悉就行。
你打开代码包,在把main.c中的内容做为你的主程序。之后把application中的所有模块都添加上,还有
别忘了各级的APP_CFG.H这个文件也都包含上。但在application中,没有led模块和serial模块,这两个算
作时这个游戏的驱动吧,对这两个模块要提供的接口是要根据你的平台自己写的。LED在这个游戏中其
实只是在MAIN.C中一个呼吸灯上用到,这是为了检查我的程序有没有堵塞(我的程序没用中断),
SERIAL就是提供基本的串口发送或接收字节的及初始化接口,但系统时钟和波特率的设定也在这个
模块中完成。你可以参看下我在Examples中给得三个平台的驱动例子。
之后就是你看下最顶层的APP_CFG.H,就是和MAIN.C在同一个文件夹下的那个,这个配置头文件中
的后面部分是条件编译,依据你平台的特殊性,增加或修改相应的内容,之后在你的项目属性设置
中的编译选项中添加上相应的宏。
如我以下代码:
#if defined (__MCU_AVR_32__)
#include<avr/io.h>
#include<avr/pgmspace.h>
#define MOVE_TIME_LONG 0x3FFF
#define MOVE_TIME_DEC 0x8EF
#define CONFIG_INIT() do{ }while(0)
#define FLASH PROGMEM
#elif defined (__MCU_AVR_UC_3A__)
#include <asf.h>
#include<avr32/io.h>
////***********************************************************
//// user define
////***********************************************************
#define MOVE_TIME_LONG 0x3FFF
#define MOVE_TIME_DEC 0x8EF
#define FLASH const
#define prog_uint8_t const uint8_t
#define memcpy_P(__p_chDes,__p_chSorc,__size_t) memcpy((__p_chDes),(__p_chSorc),(__size_t))
#define CONFIG_INIT() do{board_init();\
led_init();\
pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP);}while(0)
如我在MEGA32平台上运行时,考虑到我用的编译器是AVR studio4,为了将一些字符串放到falsh里,
我要用到pgmspace.h中的一些函数,我便在__MCU_AVR_32__宏控制的条件编译下加入相应的一些
不同的配置,而共用的配置就在条件编译之外。
类似地设计其他编译条件。这样,我把程序移植到MEGA32上是,只要在项目属性的预编译设置中加
入__MCU_AVR_32__便可。
仿照上面的例子,你可以增加你自己平台的预编译宏,来添加你平台上所需要的信息。
我在另一个帖子中对这些内容也做了更新,如果有不相同的,可以参看以下帖子中的代码,或者回复一下,共同探讨。
另一个帖子:http://www.amobbs.com/thread-5509217-1-1.html |
|