主题 : 编译后出现Undefined symbol PCLK 怎么回事啊 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 33632
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
综合积分: 38 分
注册时间: 2010-12-03
最后登录: 2011-06-06
楼主  发表于: 2011-03-05 19:31

 编译后出现Undefined symbol PCLK 怎么回事啊

图片:
图片:
       根据韦东山的开发手册做串口的实验,编译后出现Error : Undefined symbol PCLK (referred from 2440lib.0).

main.c 函数 :

#include <stdlib.h>
#include <string.h>
#include "option.h"
#include "2440addr.h"    
#include "2440lib.h"
#include "2440slib.h"


#define TXD0READY   (1<<2)
#define RXD0READY   (1)

/*
* 初始化UART0
* 115200,8N1,无流控
*/

#define PCLK            50000000    // init.c中的clock_init函数设置PCLK为50MHz
#define UART_CLK        PCLK        //  UART0的时钟源设为PCLK
#define UART_BAUD_RATE  115200      // 波特率
#define UART_BRD        ((UART_CLK  / (UART_BAUD_RATE * 16)) - 1)



void uart0_init(void)
{
    rGPHCON  |= 0xa0;    // GPH2,GPH3用作TXD0,RXD0
    rGPHUP   = 0x0c;     // GPH2,GPH3内部上拉

    rULCON0  = 0x03;     // 8N1(8个数据位,无较验,1个停止位)
    rUCON0   = 0x05;     // 查询方式,UART时钟源为PCLK
    rUFCON0  = 0x00;     // 不使用FIFO
    rUMCON0  = 0x00;     // 不使用流控
    rUBRDIV0 = UART_BRD;
}  

/*
* 发送一个字符
*/
void putc(unsigned char c)
{
    /* 等待,直到发送缓冲区中的数据已经全部发送出去 */
    while (!(rUTRSTAT0 & TXD0READY));
    
    /* 向UTXH0寄存器中写入数据,UART即自动将它发送出去 */
    rUTXH0 = c;
}

/*
* 接收字符
*/
unsigned char getc(void)
{
    /* 等待,直到接收缓冲区中的有数据 */
    while (!(rUTRSTAT0 & RXD0READY));
    
    /* 直接读取URXH0寄存器,即可获得接收到的数据 */
    return rURXH0;
}

/*
* 判断一个字符是否数字
*/
int isDigit(unsigned char c)
{
    if (c >= '0' && c <= '9')
        return 1;
    else
        return 0;      
}

/*
* 判断一个字符是否英文字母
*/
int isLetter(unsigned char c)
{
    if (c >= 'a' && c <= 'z')
        return 1;
    else if (c >= 'A' && c <= 'Z')
        return 1;      
    else
        return 0;
}


int Main(void)
{
    U8 c;    
    uart0_init();   // 波特率115200,8N1(8个数据位,无校验位,1个停止位)
    while(1)
    {
        // 从串口接收数据后,加1后输出
        c = getc();
        if (isDigit(c) || isLetter(c))
                putc(c+1);
    }

    return 0;    
}




不知是怎么回事,求教?
级别: 新手上路
UID: 37560
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
综合积分: 12 分
注册时间: 2011-02-12
最后登录: 2011-05-05
1楼  发表于: 2011-03-18 18:23
加个宏定义:
#define GLOBAL_CLK 1
试试看^_^
级别: 新手上路
UID: 31194
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
综合积分: 12 分
注册时间: 2010-10-27
最后登录: 2011-07-17
2楼  发表于: 2011-05-01 01:44
我也遇到这问题了
级别: 新手上路
UID: 47479
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
综合积分: 16 分
注册时间: 2011-05-23
最后登录: 2011-10-03
3楼  发表于: 2011-06-17 15:50
1楼正解。谢谢了
arm in arm
梦想就在前方
级别: 新手上路
UID: 50769
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
综合积分: 36 分
注册时间: 2011-06-25
最后登录: 2011-12-31
4楼  发表于: 2011-06-25 22:58
1楼果然正解~~~~鼓掌~~~~