标题: nmea.h(23): error C141: syntax error near '*', expected ')问题出在哪? [打印本页]

作者: jxcrgt35    时间: 2023-10-21 17:50
标题: nmea.h(23): error C141: syntax error near '*', expected ')问题出在哪?
// .c 文件

#include "nmea.h"


NMEA_INFO_TYPE xdata nmea_info;

//默认为主机
void nmea_init(void)
{
        memset(&nmea_info, 0, sizeof(NMEA_INFO_TYPE));
        nmea_info.loca_addr = '0';
        nmea_info.command[0] = 'R';
        nmea_info.command[1] = '1';
        nmea_info.command[2] = 0;
}

void FNNN (UART0_INFO_TYPE * uart0_info)
{
        uart0_info->uart0_mode = 1;
}


// .h文件
#ifndef _NMEA_
#define _NMEA_

#include "common.h"
#include "uart.h"
#include "tft.h"

//常变量定义
typedef struct
{
        uint8_t loca_addr;        //本机地址
        uint8_t command[5];        //发送的命令
}NMEA_INFO_TYPE;

extern NMEA_INFO_TYPE xdata nmea_info;


//函数
void nmea_init(void);


void FNNN (UART0_INFO_TYPE * uart0_info);

#endif


将以上两个文件,单独新建工程没有问题


作者: Hephaestus    时间: 2023-10-21 20:51
void FNNN (UART0_INFO_TYPE * uart0_info);
这句有问题吧,你查查对应的h文件。
作者: jxcrgt35    时间: 2023-10-21 22:36
Hephaestus 发表于 2023-10-21 20:51
void FNNN (UART0_INFO_TYPE * uart0_info);
这句有问题吧,你查查对应的h文件。

typedef struct  
{
        uint8_t uart0_mode;                        //防灾是ASCII或NMEA0183格式,MODBUS是时间间隔通信
        uint8_t uart0_rx_timer;        //超时判断
        uint8_t uart0_rx_over;
        uint8_t uart0_rx_data[UART0_BUFF_SIZE] ,uart0_tx_data[UART0_BUFF_SIZE];
        uint8_t uart0_rx_count;        //串口接收/发送计数器
}UART0_INFO_TYPE;

//变量
extern UART0_INFO_TYPE xdata uart0_info;
作者: jxcrgt35    时间: 2023-10-21 22:38
#ifndef _UART_H_
#define _UART_H_

#include "common.h"
#include "hwinit.h"
#include "timer.h"

#define UART0_BUFF_SIZE  100                //缓存最大长度
#define UART0_RX_TIMEOUT 20/10        //1字节接收超时,20ms

typedef struct  
{
        uint8_t uart0_mode;                        //防灾是ASCII或NMEA0183格式,MODBUS是时间间隔通信
        uint8_t uart0_rx_timer;        //超时判断
        uint8_t uart0_rx_over;
        uint8_t uart0_rx_data[UART0_BUFF_SIZE] ,uart0_tx_data[UART0_BUFF_SIZE];
        uint8_t uart0_rx_count;        //串口接收/发送计数器
}UART0_INFO_TYPE;

//变量
extern UART0_INFO_TYPE xdata uart0_info;

enum
{
        UART0_MODBUS_MODE = 0,        //默认为MODBUS模式
        UART0_ASCII_MODE                                //防灾模式
};

//函数
void UART0_ISR(void);

void uart0_tx_onebyte(unsigned char cdata);
void uart0_tx_msg(unsigned char *string);
void uart0_tx_len_msg(unsigned char *string,unsigned int len);

#ifdef DBG
void uart0_tx_len_hextoasc(unsigned char *in_buff , unsigned int buff_len);
#endif

void uart0_init (UART0_INFO_TYPE * uart0_info);



#endif
作者: jxcrgt35    时间: 2023-10-23 22:36
发现在定义结构体的h和c文件可以使用如,uart0_set(UART0_INFO_TYPE * uart0_info);,但是在别的文件,,如在LCD.c文件lcd_data(UART0_INFO_TYPE * uart0_info);就会报错。什么原因?
作者: Hephaestus    时间: 2023-10-23 22:42
jxcrgt35 发表于 2023-10-23 22:36
发现在定义结构体的h和c文件可以使用如,uart0_set(UART0_INFO_TYPE * uart0_info);,但是在别的文件,,如 ...

只有你自己才能找到原因。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1