智能车制作

标题: 直立车 [打印本页]

作者: yankunliying    时间: 2013-8-27 16:18
标题: 直立车
unsigned char uart_getchar(void)
{
//printf("uart_getchar\n");

  byte res=0;
   while(!(SCI0SR1&0x80)) ;    //keep waiting when not empty  
   return (SCI0DRL);
}
串口程序在分组里定义 .c  .h  为什么不可以正确使用 这是山大直立车参考程序里面的。

作者: rubick    时间: 2013-8-27 17:10
头文件用来声明,暴露接口
源文件用来定义,隐藏实现。
你的问题能不能说具体点?
作者: yankunliying    时间: 2013-8-27 18:43
rubick 发表于 2013-8-27 17:10
头文件用来声明,暴露接口
源文件用来定义,隐藏实现。
你的问题能不能说具体点?

好的 我参考的山大的直立车程序 自己加无线检测波形  我定义了一个Wireless T.h 一个Wireless T.c 在中断服务程序里调用 用的上位机是serial_digital_scope 调试时老是出现错误1Incompatible type to previous declaration 2missing ;
1#ifndef Wireless T_H        //if no define
#define Wireless T_h        //define  即如果没有定义的话,则定义。。。。(防止其他函数多次调用此头文件时而重复定义)
//#include  "Include_def.h"
/*--------------- I N C L U D E S ------------------------------------*/   
extern void Dly_ms(unsigned int ms);
extern void uart_putchar ( unsigned char c);
extern void uart_getchar(void);
extern void uart_putstr(char ch[]) ;
extern void CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT);
extern void OutPut_Data(void) ;
extern float OutData[4] ;
#endif //结束定义,配合#ifndef使用
2#include  "Include_def.h"
#include "derivative.h"      /* derivative-specific definitions */
int8u_t celve = 0;
float OutData[4] = { 0 };

////////////////////////////////////////////////////////////////////////////////
void Dly_ms(int16u_t ms)
{
  int16u_t i,j;
  for(i=0;i<ms;i++)
    for(j=0;j<20000;j++);
}

void uart_putchar ( int8u_t c)
{
  
  while(!(SCI0SR1&0x80)) ;       //keep waiting when not empty  
  SCI0DRL=c;
}
int8u_t uart_getchar(void)
{
//printf("uart_getchar\n");

  //int8u_t res=0;
   while(!(SCI0SR1&0x80)) ;    //keep waiting when not empty  
   return (SCI0DRL);
}

void uart_putstr(int8s_t ch[])
{
  int8u_t ptr=0;
  while(ch[ptr]){
      uart_putchar((int8u_t)ch[ptr++]);
  }
}
//********************************************************************
int16su_t CRC_CHECK(int8u_t *Buf, int8u_t CRC_CNT)
{
    int16su_t CRC_Temp;
    int8u_t i,j;
    CRC_Temp = 0xffff;
    for (i=0;i<CRC_CNT; i++){      
        CRC_Temp ^= Buf;
        for (j=0;j<8;j++) {
            if (CRC_Temp & 0x01)
                CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;
            else
                CRC_Temp = CRC_Temp >> 1;
        }
    }
    return(CRC_Temp);
}

//**********************************************************
void OutPut_Data(void)
{
  int16s_t temp[4] = {0};
  int16u_t temp1[4] = {0};
  int8u_t databuf[10] = {0};
  int8u_t i;
  int16su_t CRC16 = 0;
  for(i=0;i<4;i++)
   {
   
    temp  = (int16s_t)OutData;
    temp1 = (int16u_t)temp;
   
   }
   
  for(i=0;i<4;i++)
  {
    databuf[i*2]   = (int8u_t)(temp1%256);
    databuf[i*2+1] = (int8u_t)(temp1/256);
  }
  
  CRC16 = CRC_CHECK(databuf,8);
  databuf[8] = CRC16%256;
  databuf[9] = CRC16/256;
  
  for(i=0;i<10;i++)
    uart_putchar(databuf);
}


经常提示这个有错误1和2
int8u_t uart_getchar(void)
{
//printf("uart_getchar\n");

  //int8u_t res=0;
   while(!(SCI0SR1&0x80)) ;    //keep waiting when not empty  
   return (SCI0DRL);
}

作者: rubick    时间: 2013-8-27 19:53
#ifndef Wireless T_H
#define Wireless T_h

感觉是这里有问题,你改成这样试试

#ifndef Wireless
#define Wireless
作者: yankunliying    时间: 2013-8-27 20:58
rubick 发表于 2013-8-27 19:53
#ifndef Wireless T_H
#define Wireless T_h

我知道怎么回事了  找到了上位机的测试程序 不过很谢谢你 以后我试过你说的再回答你
作者: 百花园林2011    时间: 2013-8-28 12:14

作者: 百花园林2011    时间: 2013-8-28 12:15

作者: 追风style    时间: 2013-8-28 12:29





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2