久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1841|回復: 0
收起左側

can小板的程序

[復制鏈接]
ID:134779 發表于 2016-7-24 00:40 | 顯示全部樓層 |閱讀模式
/**
  ******************************************************************************
  * ÎļtÃû£o
  * ×÷Õߣo  huang_4115@126.com
  * °æ±¾£o  V1.0.0
  * èÕÆú£o  2013-
  * Õaòa£o  èÎÎñoˉêy
  ******************************************************************************
  * ËμÃ÷£o
  *
  ******************************************************************************
  **/
#include "includes.h"


OS_STK task_demo_stk[TASK_DEMO_STK_SIZE];                  //¶¨òåÕ»
OS_STK task_cmd_stk[TASK_CMD_STK_SIZE];                 

OS_EVENT *Mbox_Can1;

u8 UM = 2;


/**
  *    ËμÃ÷£o
  *    êäèë£o
  *    êä3ö£o
  **/
void Task_Start(void *p_arg)
{
        OSTaskCreate(Task_Demo, (void *)0, &task_demo_stk[TASK_DEMO_STK_SIZE-1], TASK_DEMO_PRIO);
        OSTaskCreate(Task_CMD, (void *)0, &task_cmd_stk[TASK_CMD_STK_SIZE-1], TASK_CMD_PRIO);

    Mbox_Can1 = OSMboxCreate((void *)0);

    LED3_ON;               //Ïèμãááled3
    OSTimeDly(300);        //μè′yelmoíêè«1¤×÷
    printf("MO=0;");
    printf("UM=%d;",UM);   //ĬèÏê1óÃËù¶èÄ£ê½ á¢¿ì¼óÔØËù¶è
    printf("PM=1;");
    printf("AC=2000000;");
    printf("DC=2000000;");

    printf("MO=1;");
    printf("EC;");         //èç1ûᬽóÎTÎó£¬′Ë걻Ὣled3ϨÃe

    while (1)
    {
        IWDG_Init(IWDG_Prescaler_4,1000);     //3¬ê±100ms¸′λ
        OSTaskSuspend(STARTUP_TASK_PRIO);
    }
}

/**
  *    ËμÃ÷£o
  *    êäèë£o
  *    êä3ö£o
  **/
void Task_Demo(void *p_arg)
{
    u16 temp;   
    u32 err_code=0,*perr_code;
    s32 speed;
    s32 position;
    while(1)
        {   
        if(CAN_ReadCnt!=CAN_WriteCnt)
        {
            temp = CAN_ReadCnt%CAN1_BUF_SIZE;
            switch(RxMessage[temp].Data[0])
            {   
                case 'v':                 //Ëù¶èÄ£ê½
                case 'V':
                        speed = (s16)((RxMessage[temp].Data[1]<<8)|RxMessage[temp].Data[2])*RPM2CPS;
                        if(UM != 2)
                        {
                            UM = 2;            //ê1óÃËù¶èÄ£ê½ á¢¿ì¼óÔØËù¶è
                            printf("MO=0;");
                            printf("UM=%d;",UM);
                            printf("MO=1;");
                        }                           
                        printf("JV=%d;BG;",speed);
                        break;
                case 'p':                //λÖÃÄ£ê½
                case 'P':
                        if((RxMessage[temp].Data[1] == 'R')||(RxMessage[temp].Data[1] == 'r'))
                        {
                            speed = (s16)((RxMessage[temp].Data[2]<<8)|RxMessage[temp].Data[3])*RPM2CPS;
                            position = (RxMessage[temp].Data[4]<<24)|(RxMessage[temp].Data[5]<<16)|      \
                                        (RxMessage[temp].Data[6]<<8)|(RxMessage[temp].Data[7]);
                            if(UM != 5)
                            {
                                UM = 5;            //ê1óÃλÖÃģ꽣¬Ïè¼óÔØÎ»Öã¬Ôù¼óÔØËù¶è
                                printf("MO=0;");
                                printf("UM=%d;",UM);
                                printf("MO=1;");
                            }                           
                            printf("SP=%d;PR=%d;BG;",speed,position);
                        }
                        else   
                        if((RxMessage[temp].Data[1] == 'A')||(RxMessage[temp].Data[1] == 'a'))
                        {
                            speed = (s16)((RxMessage[temp].Data[2]<<8)|RxMessage[temp].Data[3])*RPM2CPS;
                            position = (RxMessage[temp].Data[4]<<24)|(RxMessage[temp].Data[5]<<16)|      \
                                        (RxMessage[temp].Data[6]<<8)|(RxMessage[temp].Data[7]);
                            if(UM != 5)
                            {
                                UM = 5;            //ê1óÃλÖÃģ꽣¬Ïè¼óÔØÎ»Öã¬Ôù¼óÔØËù¶è
                                printf("MO=0;");
                                printf("UM=%d;",UM);
                                printf("MO=1;");
                            }                           
                            printf("SP=%d;PA=%d;BG;",speed,position);
                        }
                        break;
                 case 'm':                  //ê1Äü¡¢ê§Äüμç»ú
                 case 'M':
                        if((RxMessage[temp].Data[1] == 'O')||(RxMessage[temp].Data[1] == 'o'))
                        {
                            if(RxMessage[temp].Data[3] == '0')
                                printf("MO=0;");
                            else
                                printf("MO=1;");
                        }
                        if((RxMessage[temp].Data[1] == 'F')||(RxMessage[temp].Data[1] == 'f'))  //μç»úê§ÄüDÅÏ¢
                        {
                            USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
                            printf("MF;");     //»ñè¡μç»úê§Äü′íÎóÂë
                        }
                        break;
                 case 'e':                  //2éÑˉ′íÎó
                 case 'E':
                        if((RxMessage[temp].Data[1] == 'C')||(RxMessage[temp].Data[1] == 'c'))
                        {
                            USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
                            printf("MO=1;");   //Ïè·¢ò»¸öÃüáî2úéú×îDÂ′íÎóÂë
                            printf("EC;");     //»ñè¡′íÎóÂë
                        }
                        break;
                 case 'r':                //èí¼t¸′λ
                 case 'R':
                        if((RxMessage[temp].Data[1] == 'B')||(RxMessage[temp].Data[1] == 'b'))
                            SoftReset();
                        break;

                        /*ÆäËû1|Äü¿é×ÔDDà©Õ1*/           

                 default:
                        break;
            }
            CAN_ReadCnt++;
        }
        perr_code = OSMboxAccept(Mbox_Can1);
        if(perr_code!=0)            //¸øÖ÷¿Ø·¢Ëí′íÎóÂë
        {
            err_code = *perr_code;
            TxMessage.DLC=4;                                //Ö¡3¤¶è 0~8
            TxMessage.Data[0]=(err_code) >>24;
            TxMessage.Data[1]=(err_code) >>16;
            TxMessage.Data[2]=(err_code) >>8;
            TxMessage.Data[3]=(err_code) ;
            CAN1_SendMsg();
        }
        IWDG_Feed();
        }                       
}



/**
  *    ËμÃ÷£o
  *    êäèë£o
  *    êä3ö£o
  **/
void Task_CMD(void *p_arg)
{
    while (1)
    {
        CPL_LED1;
        OSTimeDly(500);
    }
       
}


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美婷婷| www亚洲成人| 国产婷婷在线视频 | 欧美精品一区二区三区在线播放 | 国产一区二区三区在线 | 日韩视频在线观看中文字幕 | wwww.8888久久爱站网 | 天天操天天干天天透 | 成人一区二区在线 | 国产亚洲精品综合一区 | 久草视 | 中文字幕av一区 | 国产成人99久久亚洲综合精品 | 欧美日韩在线免费 | 国产一级在线 | 欧美在线一区二区三区 | 黄色av网站免费看 | 国产黄色av网站 | 精品一区二区在线视频 | 紧缚调教一区二区三区视频 | 日韩成人av在线 | 午夜影院在线播放 | 中文字幕成人在线 | 影音先锋欧美资源 | 日韩在线观看 | 婷婷去俺也去 | 国产日韩一区 | 欧美一区二区三区视频 | 欧美一级免费观看 | 免费视频久久久久 | 日韩精品免费一区 | 先锋av资源网 | 国产午夜精品久久 | 亚洲精品视频久久 | 有码一区 | 自拍偷拍第一页 | 国产精品免费在线 | 久久丁香 | 日韩第一夜| 午夜视频在线 | 成人a免费 |