请大家看我的以前的一点测试,再接着读下问,当然也可以直接读下文. 其实到这里还是没我们自己的一点代码在运行,要运行自己的代码,必须自己写代码啦,我已经事先装的有IAR FOR ARM V6.40版本。这个版本的IAR直接支持Atmel SAM-4S Xplained上SAM4S16C这个芯片。 使用IAR打开了一个asf-standalone-archive-3.5.1.62里面工程sam4s_xplained_qtouch_demo_flash.ewp 研究下工程文件的结构。逐级打开文件的目录,仔细分析。发现CMSIS目录下有3个文件。 exceptions.c system_sam4s.c startup_sam4s.c 明显是初始配置启动文件。有了这3个文件再加个main文件就可以组成一个工程了。 1:于是新建了一个 文价夹 test_4s,下面建了3个子文件夹 user CMSIS component 和ATMEL公司的工程摸板近似保持一致。 按照 sam4s_xplained_qtouch_demo_flash.ewp设置文件路径什么的复制启动文件配置文件到对应目录。 2: 开启IAR 新建立一个工程test_4s 保存于user目录下。工程目录里面设置了CMSIS common driver user output(自动的)等目录。 3:在CMSIS里添加刚才的3个启动文件。 Driver里随便搞了个pio.c User里弄了个空函数main.c 具体内容等下再写哦。呵呵 4:打开 test_4s options 进行工程设置。首先选择芯片 当然就是SAM4SC16了。这个不要搞错的。 5:在 C/C++ Compiler 选项找到preprocessor 这个选项,填入各种头文件联结地址目录结构。下边的defined symbols 我是复制ATMEL的demo里的。 6:在 Assembler 选项,同样找到preprocessor 这个选项,填入各种头文件联结地址目录结构。下边的defined symbols 填入和 C/C++ Compiler一致的defined symbols即可。 7:在linker选项的config里要填入 SAM4S16C的flash.icf结构文件,这个文件定义了SAM4S16C的 RAM ,FLASH 及一个存储器的地址等组织情况。这个也是我从demo里复制过来的,指定好路径既可,否则make的时候无法生成*.out的烧写文件的。 8:debugger 选项。选择好使用的仿真器 JLINK就好了。如果想要主程序跑到main 勾选 run to main 选项。这个不多说了。 9:J-LINK/J-trace 选项 只在setup里选择好JLINK的接口类型和速度,我选择了个自动适应的速度。大家可以看着选择。 10:我的工程文件很简单,只在main函数里添加了几行控制LED闪烁的代码,采用积存器直接控制的方式。 #include "PIOC.h" #include "SAM4S16C.h" void mdelay(unsigned int timer) { unsigned int i,j; for(i=0;i<timer;i++) { for(j=0;j<1300;j++);//不怎么准,意思一下哦 } } //LED1 PC10 //LED2 PC17 int main(void) { REG_PIOC_PER |=(0x00000001<<10) | (0x00000001<<17);//使能 PIN LED1 PC10 LED2 PC17 REG_PIOC_OER |=(0x00000001<<10) | (0x00000001<<17);//使能输出 LED1 PC10 LED2 PC17 while (1) { REG_PIOC_SODR |=(0x00000001<<10) | (0x00000001<<17);//置位输出 mdelay(500); REG_PIOC_CODR |=(0x00000001<<10) | (0x00000001<<17);//清楚输出 mdelay(500); } } 编译通过,没有错误。 11:点IAR的下载仿真按纽,download 仿真开始,PC指针跳到main函数的第一句程序代码这里。按step单步,程序顺利执行,可以看到板子上的指示灯轮流亮灭。 至此,整个最简单的测试完成。 后记,虽然写的很简单,但是做起来还是很麻烦的,尤其的第一次建立工程,数不完的错误,一个接一个,大部分是头文件的包含和调用什么的引起的,排除一个出一堆,楼主我弄了好几个晚上才彻底搞定了,几乎累的吐血,说的夸张了点。为了操作LED,还看了SAM4SC16的datasheet看端口寄存器都几十个,看的头大,最后找了几个主要和输出有关系的,进行控制。 接下来准备驱动下IL9325的TFT LCD,有结果,一定上传代码,和大家一起交流。
|