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

📄 check.c

📁 基于Cortex-M3的全自动焊接机
💻 C
字号:
#include  "check.h"
#include  "function.h"
#include  "24C16.h"
#include  "LM3S_I2CM.h"
#include   "tmp101.h"

bool Buzzer_Flag = 0;  //蜂鸣器标志位
bool Show = 1;



/***************************************************
函数名:Self_checking()
功能:  系统自检
参数: 
说明:  
返回值:0 系统自检结果正常   、 1~N 系统自检异常
****************************************************/
char Self_checking(void)
{
    unsigned char Check_result = 0;
    unsigned char i = 0;
    unsigned long ZLG7290_Check = 0xAA; 
    char EE24C16_Check = 0; 
    
    
    GPIO_L(LED1);GPIO_L(LED2);GPIO_L(LED3);GPIO_L(LED4); //点亮控制板上的4个LED
   
    //Buzzer_Runing();       //打开蜂鸣器
    TimerLoadSet(TIMER0_BASE , TIMER_A , 30000UL);  //设置定时器初值 定时1s
    TimerEnable(TIMER0_BASE , TIMER_A);             //使能Timer0A   
    Buzzer_Flag = 1;       //蜂鸣器标志 可以进入定时器中相应的if部分*/
    
    //数码管7290自检
    ZLG7290_Check = ZLG7290_Download_One(ZLG7290_DpRam+1,1,0,8);
    if(ZLG7290_Check!=I2C_MASTER_ERR_NONE)
    {
        Error_Table[Check_Error_Flag++] = 34;  
        Check_result = 1;
    }
    //LED和按键7290自检
    ZLG7290_Check = ZLG7290_Download(ZLG7290_DpRam+1,1,0,8);
    if(ZLG7290_Check!=I2C_MASTER_ERR_NONE)
    {
        Error_Deal(35); 
        Check_result = 1;
    } 
    
      //数码管自检成功点亮所有的数码管
    for(i=0;i<6;i++)        
    {
        ZLG7290_Download_Display(ZLG7290_DpRam+i,1,0,8);
    }      //点亮所有的LED
    for(i=0;i<6;i++)        
    {
        ZLG7290_Download(ZLG7290_DpRam+i,1,0,8);
        Delay(100);
    } 
     
    //自检pwm板的通信    
    /*GPIO_L(CON_4851);                       //使能485发送数据
    SendData_USART0(0xA1,0x01,0x01,0x01,0x01,
                    0x01,0x01,0x01,0x01,0x01,
                    0x01,0x01,0x01,0x01,0x01
                    );//发送自检命令
    Delay(120000);    //等待数据发送完毕 20ms
    GPIO_H(CON_4851);
    TimerLoadSet(TIMER2_BASE , TIMER_A , 30000UL);  //  设置定时器初值 定时1s
    TimerEnable(TIMER2_BASE , TIMER_A);             //  使能Timer2A
    while(!Timer2AFlag);//等待定时时间到
    Timer2AFlag = 0;
    TimerDisable(TIMER2_BASE,TIMER_A);   //关闭定时器2A
    if((Uart1Buf[0]!=0xA3)||(Uart1Buf[1]!=0x55)||(Uart1Buf[2]!=0xAA))
    {
        Error_Deal(36); 
        Check_result = 1;
    }*/
    
    
    //自检EEPROM
    WriteByteToEEPROM(5,0x02);
    Delay(0xfffff);
    EE24C16_Check = ReadByteFromEEPROM(5);
    if(EE24C16_Check!=0x02)
    {
        Error_Deal(37); 
        Check_result = 1;
    }
     
    
    //温度自检
    //tmp101_ReadReg(0x00, TMp101_buf);//采集温度    TMp101_buf[0]是温度整数部分
    tmp101_ReadReg(0x00, TMp101_buf);//采集温度    TMp101_buf[0]是温度整数部分
    if(TMp101_buf[0] > 40)
    {
        Error_Deal(38); 
        Check_result = 1;      
    }
    //模拟参数采集自检
    ADC_Caiji();
    ADC_Caiji();
    if(ADC_AI_Data > 2000)
    {
        Error_Deal(39); 
        Check_result = 1;         
    }
    if(ADC_UI_Data > 2000)
    {
        Error_Deal(40); 
        Check_result = 1;        
    }
     
    if(Check_result)  
    { 
       ClearAll_LED(0,3);      //清除所有LED
       Display(5,0,0);//显示错误代码初始值    
    }
    
    return Check_result;
}

/***************************************************
函数名:Error_Display()
功能:
参数:   
说明:  显示错误信息
返回值:无
****************************************************/
void Error_Display(void)
{
    if(Key_Left)
    {
        Display_Parameter(Left_Move);   //进入参数查看
        Show = 1;
    }
    else if(Key_Right)
    {
        Display_Parameter(Right_Move);   //进入参数查看
        Show = 1;
    }
    else
    {
        Show = 0;
    }
    
    if(Show==1)
    {
        Display(5,0,0);//显示错误代码
    }
}

/***************************************************
函数名:Error_Deal
功能:
参数:   
说明: 错误信息处理函数
返回值:无
****************************************************/
void Error_Deal(unsigned char Error_Data)
{
    unsigned char i = 0;
    
    if(Check_Error_Flag==10)//10个错误代码 存放栈已满
    {
        for(i=0;i<9;i++)//错误信息在数组里面 往前移动一位
        {
            Error_Table[i] = Error_Table[i+1];   
        }
        Error_Table[i+1] = Error_Data;
    }
    else
    {
        Error_Table[Check_Error_Flag++] = Error_Data; 
    }
}

/*********************************************
功能:蜂鸣器初始化
参数:无
返回:无
***********************************************/
void  BuzzerInit(void)
{   
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOB);                  //  使能GPIOB端口
    GPIOPinTypeOut(GPIO_PORTB_BASE , GPIO_PIN_1);           //  设置PB1输入类型
    GPIOPinWrite(GPIO_PORTB_BASE , GPIO_PIN_1 , 0x01 << 1); //  更新PB1的输出状态  高     
}

//蜂鸣器运行函数
void Buzzer_Runing(void)
{ 
    GPIOPinWrite(GPIO_PORTB_BASE , GPIO_PIN_1 , 0X00 << 1);     //PB1的输出低

}
//停止蜂鸣器函数
void Buzzer_Stop(void)
{ 
    GPIOPinWrite(GPIO_PORTB_BASE , GPIO_PIN_1 , 0X01 << 1);     //更新PB1的输出高

}

⌨️ 快捷键说明

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