原创 freescale mcf52233demo使用指南2--第一个程序

2010-2-22 20:38 1871 3 3 分类: MCU/ 嵌入式
上节讲了如何安装IDE环境和给demo板上电并安装驱动程序。这节将讲述如何建立一个最简单的工程,并实现RAM和FLASH调试。
首先连接好demo板和电脑,这次是不用再安装驱动程序的,打开IDE环境则显示一个灰屏,这里要建立一个最简单的工程实现LED的闪烁。板上LED在右下角串口的位置,共4个,使用52233的dtin0-3脚,可以通过原理图查出,再通过datasheet则知道,dtin0-3和GPIO的PORTTC是复用的,则改变PORTTC的状态即可以改变LED的状态,这是最简单的编程思路。
1、运行IDE环境,在“开始”菜单里即可运行,很简单,如下图:

点击看大图
2、打开后IDE只有一个空界面,这里要建立一个工程,首先选择“new...”;
832cd6f6-0316-4ca3-8ecc-87cfe1ec073e.JPG
3、在该填的地方填上相应的东西,注意目录和类型的选择;
ffb7d282-5c44-4af4-a57a-26324ef972a4.jpg
4、在CPU选择和编程语言选择,一定要选MCF52233DEMO和C;
ed966fd2-8066-4c0b-9c99-cc89b8daa1cf.jpg
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





PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条