標題: STM32F107VC的CAN多幀中斷發(fā)送程序 調(diào)試通過 [打印本頁]

作者: xgt6568    時間: 2017-6-8 10:33
標題: STM32F107VC的CAN多幀中斷發(fā)送程序 調(diào)試通過
基于STM32F107VC的CAN多幀中斷發(fā)送函數(shù),已通過調(diào)試


單片機源程序如下:
  1. /******************************************************************
  2. *STM32F107主控
  3. *ST3.5庫函數(shù)
  4. *CAN1的多幀發(fā)送函數(shù)
  5. *CAN1的中斷接收后、開發(fā)送中斷將數(shù)據(jù)發(fā)送出去,驗證成功
  6. ******************************************************************/
  7. #include "my.h"
  8. #include "led.h"
  9. #include "systick.h"
  10. #include "delay.h"
  11. #include "Can1.h"
  12. #include <string.h>
  13. u8 RBuf[256];
  14. u16 tmplen=0;
  15. u8 hostid=0;
  16. extern u8 FLAG_Start;
  17. u8 canbuf1[8]={0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01};
  18. int main(void)
  19. {
  20.         u8 t=0;

  21.   u8 ii;
  22.         SysTick_Init();
  23.         LED_GPIO_Init();
  24.         CAN_Config_Init();//500Kbit的波特率
  25.   for(;;)
  26.          {
  27.                   LED1=!LED1;
  28.                   LED2=!LED2;
  29.                   LED3=!LED3;
  30.                   LED4=!LED4;
  31.                   delay_ms(200);
  32.                   t++;
  33.                   if(t>=10)
  34.                                 {t=0;
  35.                                         LED1=1;
  36.                                         LED2=1;
  37.                                         LED3=1;
  38.                                         LED4=1;
  39.                                   break;
  40.                           }
  41.    }
  42.           for(ii=0;ii<64;ii++)RBuf[ii]=ii;
  43.          
  44.   while (1)
  45.   {
  46. //                 tmplen=CAN1_Read(&hostid,RBuf);
  47. //                 
  48. //                 hostid = tmplen = 0;
  49. //                 memset(RBuf,0,sizeof(RBuf));//復位緩存
  50. //                 CAN1_Send_Multi_Messages(ID1,RBuf,64);
  51.                 if(FLAG_Start==0xBB)
  52.                 {
  53.                         FLAG_Start=0;

  54.                         
  55.                          CAN_ITConfig(CAN1, CAN_IT_FMP0, DISABLE);        //關(guān)閉接受中斷
  56. //                         CAN_ITConfig(CAN1, CAN_IT_TME, ENABLE);
  57.                         CAN1_Send_Multi_Messages(ID1,RBuf,64);
  58. //       CAN_ITConfig(CAN1, CAN_IT_TME, DISABLE);//關(guān)閉發(fā)送郵箱空中斷
  59.                          CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);        //開始接受中斷
  60.      //CAN_Send_Msg(ID1,CAN_ID_EXT,CAN_RTR_DATA,8,canbuf1);
  61.     }               
  62.                 if(FLAG_Start==0xaa)
  63.                 {
  64.                         FLAG_Start=0;
  65.                         CAN_ITConfig(CAN1, CAN_IT_FMP0, DISABLE);        //關(guān)閉接受中斷
  66.       CAN_Send_Msg(ID1,CAN_ID_EXT,CAN_RTR_DATA,8,canbuf1);
  67.                         CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);        //開始接受中斷
  68.      
  69.     }                        
  70.                
  71. /************************System Operation **********************************/               
  72.                 t++;
  73. ……………………

  74. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
STM32F107的CAN接收發(fā)送中斷函數(shù).rar (425.56 KB, 下載次數(shù): 145)



作者: pilihuo    時間: 2017-12-7 20:23
duoxie
作者: maotingwei    時間: 2017-12-8 14:08
看一看,多謝分享
作者: hw531025    時間: 2018-4-13 14:52
仔細看看,學習學習
作者: huhu17666    時間: 2018-9-1 18:02
很不錯 學習




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1