⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compasshead.txt

📁 电子罗盘的头文件
💻 TXT
字号:
#ifndef _USE_COMPASS_FNN_H_ 
#define _USE_COMPASS_FNN_H_
# include <RD_MacroAndConst.h>
#ifndef True 
# define True    0x01 
#endif 
#ifndef False 
# define False   0x00 
#endif 

# define CPS_FNN_CMD_ERROR                  0xee 
# define CPS_FNN_CMD_REMARK_BEGIN           0xf5 
# define CPS_FNN_CMD_REMARK_END             0xf8 
# define CPS_FNN_CMD_SAVE_MARK              0xf7 
# define CPS_FNN_CMD_ENABLE_NORTH_SET       0xa5 
# define CPS_FNN_CMD_NORTH_SET              0xe5 
# define CPS_FNN_CMD_CLEAR_LAST_NORTH_SET   0xe8
#ifndef CPS_FNN_SHELL 
# define CPS_FNN_NO_SHELL 
#endif 

# define CPS_FNN_START_REMARK        CPSFNNSendCMD(CPS_FNN_CMD_REMARK_BEGIN) 
# define CPS_FNN_END_REMARK          CPSFNNReMarkEND() 

# define CPS_FNN_SET_NORTH           CPSFNNNorthSet() 

# define INSERT_USART_RX_ISR_CODE    CPSFNNGetData(TempUDR);
char CPSFNNDataBuff[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
unsigned int CPSFNNDegree = 0; 
char IfBreakOperation = False; 

void CPSFNNGetData(char Data); 
char CPSFNNSendCMD(char CMD); 
char CPSFNNReMarkEND(void); 
char CPSFNNNorthSet(void); 
extern void DelayMs(unsigned Time);

char CPSFNNNorthSet(void) 
{ 
    if (!CPSFNNSendCMD(CPS_FNN_CMD_ENABLE_NORTH_SET))       //允许设置罗盘零点指向 
                { 
                    return False; 
                } 
                 
                if (!CPSFNNSendCMD(CPS_FNN_CMD_CLEAR_LAST_NORTH_SET))   //清除上次磁北修正 
                { 
                    return False; 
                } 
                 
                if (!CPSFNNSendCMD(CPS_FNN_CMD_NORTH_SET))              //设置磁北 
                { 
                    return False; 
                } 
                 
                return True; 
} 

char CPSFNNReMarkEND(void) 
{ 
    if (!CPSFNNSendCMD(CPS_FNN_CMD_REMARK_END))             //结束罗盘转动标定  
                { 
                    return False; 
                } 
                  
                if (!CPSFNNSendCMD(CPS_FNN_CMD_SAVE_MARK))              //保存数据 
                { 
                    return False; 
                } 
                 
                return True; 
} 

char CPSFNNSendCMD(char CMD) 
{ 
#ifdef CPS_FNN_NO_SHELL 
    return False; 
#else 
    IfBreakOperation = False; 
                do 
                { 
                    CPS_FNN_SHELL = CMD; 
                    DelayMs(500); 
                    if (CPSFNNDataBuff[3] == CMD) 
                    { 
                        return True; 
                    } 
                    else if (CPSFNNDataBuff[3] == CPS_FNN_CMD_ERROR) 
                    { 
                        return False; 
                    } 
                } 
                while(!IfBreakOperation); 
                 
                return False; 
#endif 
} 
void CPSFNNGetData(char Data) 
{ 
     
                static char DataPoint = 0; 
                static char IfStartToReceive = False; 
                static char CheckByte = 0; 

                CLI(); 
    if ((IfStartToReceive == False) && (Data == 0xaa))      //检测帧头 
                { 
        IfStartToReceive = True; 
                        CheckByte = 0; 
                        DataPoint = 0; 
                } 
                if (IfStartToReceive == True)                           //开始接收 
                { 
                    CPSFNNDataBuff[DataPoint++] = Data; 
                        if (DataPoint == 20) 
                        { 
                             
                            if (CheckByte == Data)                          //进行数据校验 
                                { 
                                    CPSFNNDegree = CPSFNNDataBuff[16];          //更新角度数据 
                                        CPSFNNDegree = (CPSFNNDegree << 8) | CPSFNNDataBuff[17]; 
                                } 
                                IfStartToReceive = False;                       //接收完毕 
                        } 
                        else 
                        { 
                            CheckByte += Data; 
                        } 
                } 
                  
} 

#endif 
                         

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -