huyueboy 发表于 2011-8-14 17:04:13

GCC模块化编程遇到的问题

以下是我的程序哪位能帮我解决一下 谢谢了
#ifndef __USAR_H__
#define __USAR_H__

//初始化异步串口通信
void usart_init();

//串口数据发送
extern void tx_uasrt(unsigned char aDATA);

//串口数据接收
unsigned char rx_usart();

//发送字符串
extern void Usart_PutString(unsigned char *pcString);

#endif




/*mega128异步串口通信简介

异步正常模式
(U2X=0)波特率计算公式
BAUD = Fosc/16(UBRR+1)即UBRR = Fosc/16BAUD - 1;

异步倍数模式
(U2X=1)波特率计算公式
BAUD = Fosc/8(UBRR+1)即UBRR = Fosc/8BAUD - 1;

*/

#include<avr/io.h>
#include"USAR.H"


//串口通信初始化
void usart_init()
{
       
        UBRR0H = 0;//波特率设定为9600
        UBRR0L = 0X67;
        UCSR0B |= (1<<RXEN0)|(1<<TXEN0);//接受发送使能
        UCSR0C |= (1<<UCSZ01);//8位数据传输

}

//串口数据发送

void tx_uasrt(unsigned char aDATA)
{
       
        while(!(UCSR0A & (1<<UDRE0)));//等待数据寄存器为空
        UDR0 = aDATA;
}


//串口数据接收
unsigned char rx_usart()
{
        unsigned char aDAT;
        aDAT = UDR0;
        while(!(UCSR0A & (1<<RXC0)));//等待数据传输完毕
       
        return (aDAT);
}

//发送字符串
void Usart_PutString(unsigned char *pcString)
{
        while (*pcString)
        {
                tx_uasrt(*pcString++);
        }
        tx_uasrt(0x0D);
        tx_uasrt(0x0A);//结尾发送回车换行
}





/*
异步串口通信测试程序
2011年
*/
#include<avr/io.h>
#include"USAR.H"
void Usart_PutString(unsigned char *pcString);


int main()
{
        usart_init();
       
        tx_uasrt(0x30+1);
        Usart_PutString("我是中国人 不是东亚病夫!!");

}


出现的错误警告
../MAIN.C:15: error: invalid conversion from 'const char*' to 'unsigned char*'
../MAIN.C:15: error:   initializing argument 1 of 'void Usart_PutString(unsigned char*)'


哪位能帮我解决一下 谢谢了

huyueboy 发表于 2011-8-14 17:06:22

如果把主函数即
int main()
{
usart_init();

tx_uasrt(0x30+1);
Usart_PutString("我是中国人 不是东亚病夫!!");

}

这段函数 放在 第二个文件中 编译一切正常可是 单独在一个文件里面却不行不知道为什么!!求救!!

rundream 发表于 2017-5-1 00:00:33

extern void usart_init();
页: [1]
查看完整版本: GCC模块化编程遇到的问题