发新帖我要提问
12
返回列表
打印
[STM32F1]

ST分享大集结+CAN 通信

[复制链接]
楼主: dingbo95
手机看帖
扫描二维码
随时随地手机跟帖
21
dingbo95|  楼主 | 2017-11-28 22:19 | 只看该作者 回帖奖励 |倒序浏览
初始化 Rx Message数据结构体
void Init_RxMes(CanRxMsg *RxMessage)
{
  uint8_t ubCounter = 0;

        /*把接收结构体清零*/
  RxMessage->StdId = 0x00;
  RxMessage->ExtId = 0x00;
  RxMessage->IDE = CAN_ID_STD;
  RxMessage->DLC = 0;
  RxMessage->FMI = 0;
  for (ubCounter = 0; ubCounter < 8; ubCounter++)
  {
    RxMessage->Data[ubCounter] = 0x00;
  }
}

使用特权

评论回复
22
dingbo95|  楼主 | 2017-11-28 22:24 | 只看该作者
CAN通信报文内容设置,设置一个数据内容为0-7的数据包
void CAN_SetMsg(CanTxMsg *TxMessage)
{          
        uint8_t ubCounter = 0;

  //TxMessage.StdId=0x00;                                                 
  TxMessage->ExtId=0x1314;                                         //使用的扩展ID
  TxMessage->IDE=CAN_ID_EXT;                                         //扩展模式
  TxMessage->RTR=CAN_RTR_DATA;                                 //发送的是数据
  TxMessage->DLC=8;                                                         //数据长度为8字节
       
        /*设置要发送的数据0-7*/
        for (ubCounter = 0; ubCounter < 8; ubCounter++)
  {
    TxMessage->Data[ubCounter] = ubCounter;
  }
}

使用特权

评论回复
23
chenci2013| | 2017-11-28 22:25 | 只看该作者
这个介绍的CAN功能吗?

使用特权

评论回复
24
dingbo95|  楼主 | 2017-11-28 22:26 | 只看该作者
下面将分享下主函数部分,如何实现调用。

使用特权

评论回复
25
chenci2013| | 2017-11-28 22:27 | 只看该作者
代码在哪能下载到的

使用特权

评论回复
26
dingbo95|  楼主 | 2017-11-30 23:09 | 只看该作者
int main(void)
{
    uint8_t ledState, m, receiveId, i, canMode;

    /* 初始化 */
    TFT_Init();
    FLASH_Init();
    SYSTICK_Config();
    USART1_Config(9600);
    LED_Config();
    KEY_Config();

    /* 彩屏显示初始化 */
    GUI_DisplayInit();
    m = 10;
    canMode = 1; //要设置canMode不等于CAN_SendData[10],以便进入循环一开始就初始化
        while(1)
        {   
        /* 修改模式 */
        if(canMode != CAN_SendData[10] )
        {
            canMode = CAN_SendData[10];
            if(CAN_SendData[10])
            {
               CAN1_Config(CAN_Mode_Normal);
               Mode = (uint8_t *)CAN_ModeNormal;   
            }
            else
            {
                CAN1_Config(CAN_Mode_LoopBack);
                Mode = (uint8_t *)CAN_ModeLoopBack;
            }
            CAN1_Config16BitFilter(CAN_SendData[9], 0x00);   
        }
        /* 如果接收ID改变,就重新设置接收ID */
        if(receiveId != CAN_SendData[9])
        {
            receiveId = CAN_SendData[9];
            if(receiveId != 0x00)
            {
                CAN1_Config16BitFilter(CAN_SendData[9], 0x00);
            }               
        }

        /* 显示数据 */
        GUI_DisplayData(m);
        /* LED灯闪烁 */
        i++;      
        if(i > 0x5F)
        {   
            i = 0;
            if(ledState == 0xFE)
            {
                ledState = 0xFF;
            }
            else
            {
                ledState = 0xFE;
            }
            LED_SetState(ledState);
         }

         /* 根据键盘,做出相应的操作 */
         switch(KEY_Scan())
         {
            case(KEY_UP):

                if(m == 10)
                {
                    CAN_SendData[10] = ~CAN_SendData[10];
                }
                else
                {
                    CAN_SendData[m]++;   
                }
                GUI_Show12Char(175, 20, "等待发送", RED, BLACK);
                break;
            case(KEY_DOWN):

                if(m == 10)
                {
                    CAN_SendData[10] = ~CAN_SendData[10];
                }
                else
                {
                    CAN_SendData[m]--;   
                }
                GUI_Show12Char(175, 20, "等待发送", RED, BLACK);
                break;
            case(KEY_LEFT):
                if(m == 10)
                {
                    m = 0;
                }
                else
                {
                    m++;
                }
                break;
            case(KEY_RIGHT):
                CAN1_SendMesg(CAN_SendData[8], 8, CAN_SendData);//发送数据
                GUI_Show12Char(175, 20, "发送成功", BLUE, BLACK);
                break;
            default:
                break;     
         }
        }
}

使用特权

评论回复
27
yiyigirl2014| | 2017-11-30 23:34 | 只看该作者
以后准备转型做汽车电子,看来要学习这个了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则