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

標題: stm32 can [打印本頁]

作者: lisongyuan520    時間: 2018-9-3 14:46
標題: stm32 can
void can1_init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
  /* GPIOA */     
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);   
        
        /* CAN1  時鐘*/
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
        
        /* Configure CAN pin: RX */     // PA11
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;     //
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        /* Configure CAN pin: TX */   // PA12
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        
//   GPIO_InitTypeDef  GPIO_InitStructure;

//         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
//   RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
//   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//   
//   GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE);                     //端口復用為CAN1   

//   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                         //PB8:CAN-RX
//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                             //輸入上拉
//   GPIO_Init(GPIOB, &GPIO_InitStructure);
//   
//   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                                         //PB9:CAN-TX
//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                         //復用模式
//   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//   GPIO_Init(GPIOB, &GPIO_InitStructure);
}

/****************************************************************************
* 名    稱:TestStatus CAN_Interrupt(void)
* 功    能:中斷模式下的CAN收發
* 入口參數:無
* 出口參數:無
* 說    明:
* 調用方法:無
****************************************************************************/
void can1_Interrupt(void)
{
        CAN_InitTypeDef        CAN_InitStructure;
  CAN_FilterInitTypeDef  CAN_FilterInitStructure;  

//  CanTxMsg TxMessage;
        
        /* CAN寄存器初始化 */
  CAN_DeInit(CAN1);
  CAN_StructInit(&CAN_InitStructure);

  /* CAN單元初始化 */
  CAN_InitStructure.CAN_TTCM = ENABLE;                           //MCR-TTCM  時間觸發通信模式使能
  CAN_InitStructure.CAN_ABOM = ENABLE;                           //MCR-ABOM  自動離線管理
  CAN_InitStructure.CAN_AWUM = ENABLE;                           //MCR-AWUM  自動喚醒模式
  CAN_InitStructure.CAN_NART = DISABLE;                           //MCR-NART  禁止報文自動重傳          0-自動重傳   1-報文只傳一次
  CAN_InitStructure.CAN_RFLM = ENABLE;                           //MCR-RFLM  接收FIFO 鎖定模式  0-溢出時新報文會覆蓋原有報文  1-溢出時,新報文丟棄
  CAN_InitStructure.CAN_TXFP = ENABLE;         //MCR-TXFP  發送FIFO優先級     0-優先級取決于報文標示符      1-優先級取決于發送請求的順序
  CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; //CAN_Mode_LoopBack 環回模式   CAN_Mode_Normal

                /*波特率*////9600
//         CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;                   //BTR-SJW 重新同步跳躍寬度 1個時間單元
//   CAN_InitStructure.CAN_BS1 = CAN_BS1_1tq;                   //BTR-TS1 時間段1 占用了2個時間單元
//   CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq;                   //BTR-TS1 時間段2 占用了3個時間單元
//   CAN_InitStructure.CAN_Prescaler = 945;  
  
        ///*波特率*/9.4 k
        CAN_InitStructure.CAN_SJW = CAN_SJW_4tq;                   //BTR-SJW 重新同步跳躍寬度 1個時間單元
  CAN_InitStructure.CAN_BS1 = CAN_BS1_6tq;                   //BTR-TS1 時間段1 占用了2個時間單元
  CAN_InitStructure.CAN_BS2 = CAN_BS2_4tq;                   //BTR-TS1 時間段2 占用了3個時間單元
  CAN_InitStructure.CAN_Prescaler = 358;  
        ///////////               350  < CAN_Prescaler  < 372

//   CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;                   //BTR-SJW 重新同步跳躍寬度 1個時間單元
//   CAN_InitStructure.CAN_BS1 = CAN_BS1_5tq;                   //BTR-TS1 時間段1 占用了2個時間單元
//   CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq;                   //BTR-TS1 時間段2 占用了3個時間單元
//   CAN_InitStructure.CAN_Prescaler = 487;
        
  CAN_Init(CAN1, &CAN_InitStructure);

  /* CAN過濾器初始化 */
  CAN_FilterInitStructure.CAN_FilterNumber=13;                                                           //
  CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;                 //FM1R  過濾器組0的工作模式。
                                                                                                                                          //0: 過濾器組x的2個32位寄存器工作在標識符屏蔽位模式;
                                                                                                                                          //1: 過濾器組x的2個32位寄存器工作在標識符列表模式。
  CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;        //FS1R 過濾器組0(13~0)的位寬。
                                                                                                                                          //0:過濾器位寬為2個16位; 1:過濾器位寬為單個32位。
  
//   /* 使能報文標示符過濾器按照標示符的內容進行比對過濾,擴展ID不是如下的就拋棄掉,是的話,會存入FIFO0。 */
//   CAN_FilterInitStructure.CAN_FilterIdHigh=(((u32)0x1234<<3)&0xFFFF0000)>>16;                                //要過濾的ID高位
//   CAN_FilterInitStructure.CAN_FilterIdLow=(((u32)0x1234<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF;//要過濾的ID低位
//   CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xffff;
//   CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xffff;
  
  CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;                                       
  CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
  /* 全為0,忽略了報文標識符判別 */
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
  CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;

  CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;                                //FFAx : 過濾器位寬設置 報文在通過了某過濾器的過濾后,
                                                                                                                                          //將被存放到其關聯的FIFO中。 0:過濾器被關聯到FIFO0; 1:過濾器被關聯到FIFO1。
  CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;                                //FACTx : 過濾器激活 軟件對某位設置1來激活相應的過濾器。只有對FACTx位清0,
                                                                                                                                          //或對CAN_FMR寄存器的FINIT位設置1后,才能修改相應的過濾器寄存器
                                                                                                                                        //x(CAN_FxR[0:1])。 0:過濾器被禁用; 1:過濾器被激活。
  CAN_FilterInit(&CAN_FilterInitStructure);

  /* CAN FIFO0 接收中斷使能 */
  CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
        
}


作者: admin    時間: 2018-9-3 17:26
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 激情国产在线 | 一区二区三区 在线 | 欧美激情 亚洲 | 亚洲午夜精品 | 亚洲精品一区二区三区蜜桃久 | 黄色免费网站在线看 | 欧美日韩一区在线 | 日日操夜夜干 | 免费中文字幕 | 一级黄a| 欧美日韩国产一区二区 | 一级黄色影片在线观看 | 亚洲欧美综合网 | 国产婷婷色综合av蜜臀av | 成人av观看 | 欧美精品一区二区三区在线 | 免费精品 | 91视频一区二区三区 | 人人爽人人草 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 久久狠狠| 日本一区二区影视 | 精品欧美一区免费观看α√ | 一区二区精品 | 亚洲精品www | 国产清纯白嫩初高生视频在线观看 | 亚欧性视频 | 午夜精品久久久久久久久久久久久 | 毛片免费看 | 亚洲美乳中文字幕 | 在线中文视频 | 在线免费观看日本 | 国产精品一区在线 | 视频在线一区二区 | 欧美一区二区久久 | 91精品国产综合久久久久 | 精品国产一区二区三区四区在线 | 亚洲精品成人网 | 毛片站 | 国产真实精品久久二三区 | 不卡一区二区在线观看 |