上节讲了如何安装IDE环境和给demo板上电并安装驱动程序。这节将讲述如何建立一个最简单的工程,并实现RAM和FLASH调试。
首先连接好demo板和电脑,这次是不用再安装驱动程序的,打开IDE环境则显示一个灰屏,这里要建立一个最简单的工程实现LED的闪烁。板上LED在右下角串口的位置,共4个,使用52233的dtin0-3脚,可以通过原理图查出,再通过datasheet则知道,dtin0-3和GPIO的PORTTC是复用的,则改变PORTTC的状态即可以改变LED的状态,这是最简单的编程思路。
1、运行IDE环境,在“开始”菜单里即可运行,很简单,如下图:2、打开后IDE只有一个空界面,这里要建立一个工程,首先选择“new...”;3、在该填的地方填上相应的东西,注意目录和类型的选择;4、在CPU选择和编程语言选择,一定要选MCF52233DEMO和C;5、点“OK”后IDE会建立一个空工程,注意画红圈的几个部分,分别表示编译目标、编译链接和main函数文件。需要注意的是编译目标设置,有三个选择分别是控制台RAM,RAM和FLASH,经常用的是后两者,RAM带表在RAM中调试,FLASH代表下载程序到FLASH,调试时从FLASH中复制到RAM里进行调试,至于怎么下载到RAM和FLASH很简单,不多讲了;6、编译目标的设置,在“remote debugging”卡中,必须作如下设置,如果使用tblcf的BDM,这里的设置很重要;7、在main.c文件里写代码,如下,很简单,是一个状态改变和延时;
注意:由于BLOG系统对字体自动修正,直接复制代码可能不能使用,请自己休整一下或者直接下载工程文件包。
#include "support_common.h" /* include peripheral declarations and more */
#include <stdio.h>
void delay(unsigned int count)
{
while(count--)
{
asm
{
nop
};
}
}
int main(void)
{
printf("Hello World in C\n\r");
fflush(stdout);
MCF_GPIO_DDRTC|=0X0F;
MCF_GPIO_PORTTC=0X05;
while(1)
{
MCF_GPIO_PORTTC=~MCF_GPIO_PORTTC;
delay(400000);
}
}
注意,这里int是32位的,所以程序并没有错误,并不是我们通常使用的uint为0~65535。
8、下载并运行程序,demo上的小灯就会闪烁了。
这里把整个工程和反汇编的文本复制上来,供参考。{
20000940: 4E560000 link a6,#0
20000944: 518F subq.l #8,a7
printf("Hello World in C\n\r");
20000946: 41F92000292C lea 0x2000292C (0x2000292c),a0
2000094C: 2E88 move.l a0,(a7)
2000094E: 4EB9200027CC jsr _printf (0x200027cc) ; 0x200027cc
fflush(stdout);
20000954: 41F92000604A lea 0x2000604A (0x2000604a),a0
2000095A: 2E88 move.l a0,(a7)
2000095C: 4EB920001928 jsr _fflush (0x20001928) ; 0x20001928
MCF_GPIO_DDRTC|=0X0F;
20000962: 41F940100027 lea 0x40100027 (0x40100027),a0
20000968: 2D48FFFC move.l a0,-4(a6)
2000096C: 226EFFFC movea.l -4(a6),a1
20000970: 206EFFFC movea.l -4(a6),a0
20000974: 1210 move.b (a0),d1
20000976: 7000 moveq #0,d0
20000978: 1001 move.b d1,d0
2000097A: 00800000000F ori.l #0xf,d0
20000980: 1280 move.b d0,(a1)
MCF_GPIO_PORTTC=0X05;
20000982: 7005 moveq #5,d0
20000984: 13C04010000F move.b d0,0x4010000F (0x4010000f)
while(1)
{
MCF_GPIO_PORTTC=~MCF_GPIO_PORTTC;
2000098A: 12394010000F move.b 0x4010000F (0x4010000f),d1
20000990: 7000 moveq #0,d0
20000992: 1001 move.b d1,d0
20000994: 4680 not.l d0
20000996: 13C04010000F move.b d0,0x4010000F (0x4010000f)
delay(400000);
2000099C: 203C00061A80 move.l #400000,d0
200009A2: 2E80 move.l d0,(a7)
200009A4: 4EB920000918 jsr delay (0x20000918) ; 0x20000918
}
200009AA: 60DE bra.s main+0x4a (0x2000098a) ; 0x2000098a
工程:
===工程使用协议,不同意不要下载===
1、本代码必须在cw6.4和USB MULTILINK的BDM下使用,运行在demo板之上,不能在其他环境使用;
2、作者保证代码的有效性并亲自调试通过,但是并不对程序的安全性负责,如果程序程序直接或间接引起demo板的损坏(基本没可能),作者不会负责;
3、作者只保证在本人的demo板上运行正确,如果在其他板上运行有问题,作者不负责;
4、对于程序的问题,请自己研究,作者不会回答。
同意此协议请点如下连接下载。https://static.assets-stash.eet-china.com/album/old-resources/2009/1/27/8d597845-5f68-436b-a6d7-1c5e74ad5d00.rar
文章评论(0条评论)
登录后参与讨论