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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1777|回復: 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);
    }
       
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲精品久久午夜玫瑰园 | 91精品国产综合久久久久久蜜臀 | 久久99国产精一区二区三区 | 有码在线 | 91久久精品一区二区三区 | 午夜免费看 | 一区二区三区高清 | 国产精品一区在线 | 午夜小视频在线播放 | 亚洲一区二区三区四区五区中文 | 国产精品美女久久久久aⅴ国产馆 | 精品国产免费一区二区三区五区 | 国产精品久久久久久久久久久久久久 | 中文字幕日韩欧美一区二区三区 | 97精品超碰一区二区三区 | 中文字幕视频在线 | 中文字幕在线一 | 欧美日韩精品专区 | 瑞克和莫蒂第五季在线观看 | 欧美成视频 | 亚洲成人中文字幕 | 欧美在线一区二区视频 | 天天操天天射天天舔 | 欧洲毛片 | 日韩aⅴ视频 | 久久天天| 91福利影院 | 国产一级片| 一区二区在线免费播放 | 天堂网中文字幕在线观看 | 久久久成人免费视频 | 亚洲精品第一 | 国产在线一区二区三区 | 亚洲一区二区久久 | 精品久久久久久亚洲精品 | 91观看| 久久伊人精品 | 精品视频成人 | 日韩一区二区在线视频 | 国产高清在线精品一区二区三区 | 日韩成人av在线 |