C语言白痴求助

[复制链接]
3106|11
 楼主| HopeStars 发表于 2012-3-27 11:29 | 显示全部楼层 |阅读模式
主程序:
/*==============外部文件============*/
#include "STM8S103K.h"
#include "CarL.h"
CarL.h中的内容如下:
#define Red5PwmH TIM1_CCR2H
#define Red5PwmL TIM1_CCR2L
#define Gre5PwmH TIM1_CCR1H
#define Gre5PwmL TIM1_CCR1L
/*==============全局变量===========*/

extern void InitGpio(void);
extern void ClockSwitch(void);
extern void Time1PwmSet(void);
extern void Time2PwmSet(void);
extern void Time4Set(void);
extern void ClrTimPwmL(void);
main()
{
InitGpio();
ClockSwitch();
Time1PwmSet();
Time2PwmSet();
Time4Set();
_asm("rim");    //允许CPU全局中断
while (1)
{
  Gre5PwmH = 01;  //第一路脉宽
 Time2PwmSet();
  }
}

外部函数,不和Main函数同一个文件:
void ClrTimPwmL(void)
{
Red5PwmL = 0;
Gre5PwmL = 0;
}

本人有用的是COMSIC编译器,
编译出现:
#error cpstm8 timepwmset.c:51(1+8) Gre5PwmL undefined
#error cpstm8 timepwmset.c:50(1+8) Red5PwmL undefined
说Gre5PwmL 和Red5PwmL 没有定义
请问高手:#define是不是不能定义外部文件中的函数的内容呢
 楼主| HopeStars 发表于 2012-3-27 11:30 | 显示全部楼层
香水城,帮帮我呀
香水城 发表于 2012-3-27 11:42 | 显示全部楼层
看不到,你哪里定义了外部文件中的函数的内容?
 楼主| HopeStars 发表于 2012-3-27 11:45 | 显示全部楼层
extern void ClrTimPwmL(void);
下面的这个函数是放在别的文件中的
void ClrTimPwmL(void)
{
Red5PwmL = 0;
Gre5PwmL = 0;
}
香水城 发表于 2012-3-27 11:46 | 显示全部楼层
extern void ClrTimPwmL(void);
下面的这个函数是放在别的文件中的
void ClrTimPwmL(void)
{
Red5PwmL = 0;
Gre5PwmL = 0;
}
HopeStars 发表于 2012-3-27 11:45


你在这个文件中定义了这2个变量吗?
 楼主| HopeStars 发表于 2012-3-27 11:46 | 显示全部楼层
我把
void ClrTimPwmL(void)
{
Red5PwmL = 0;
Gre5PwmL = 0;
}
这个函数和Main写在一起,就不会出错了
香水城 发表于 2012-3-27 11:53 | 显示全部楼层
再问一遍:你在包含ClrTimPwmL()的这个文件中定义了那2个变量吗?
风走孤寒 发表于 2012-3-27 12:03 | 显示全部楼层
我也不知道,你可以试试,变量和函数都在外部文件,你要调用的话,你在主文件配置,extern void ClockSwitch(void);
extern 很有用的,extern (数据类型)Red5PwmL;它告诉你其变量在别的文件已经定义了。
lai832 发表于 2012-3-27 16:21 | 显示全部楼层
外部函数,不和Main函数同一个文件:
void ClrTimPwmL(void)
{
Red5PwmL = 0;
Gre5PwmL = 0;
}

有包含下面的文件吗?

CarL.h中的内容如下:
#define Red5PwmH TIM1_CCR2H
#define Red5PwmL TIM1_CCR2L
#define Gre5PwmH TIM1_CCR1H
#define Gre5PwmL TIM1_CCR1L
abcsmile 发表于 2012-3-27 17:41 | 显示全部楼层
路过学习;P
wankeng 发表于 2012-3-27 17:54 | 显示全部楼层
在定义函数void ClrTimPwmL(void)的文件中加上文件包含命令:#include "CarL.h"
缪僚雾人 发表于 2012-3-28 08:26 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部