基于STM32F107VC的CAN多幀中斷發送函數,已通過調試
單片機源程序如下:
- /******************************************************************
- *STM32F107主控
- *ST3.5庫函數
- *CAN1的多幀發送函數
- *CAN1的中斷接收后、開發送中斷將數據發送出去,驗證成功
- ******************************************************************/
- #include "my.h"
- #include "led.h"
- #include "systick.h"
- #include "delay.h"
- #include "Can1.h"
- #include <string.h>
- u8 RBuf[256];
- u16 tmplen=0;
- u8 hostid=0;
- extern u8 FLAG_Start;
- u8 canbuf1[8]={0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01};
- int main(void)
- {
- u8 t=0;
- u8 ii;
- SysTick_Init();
- LED_GPIO_Init();
- CAN_Config_Init();//500Kbit的波特率
- for(;;)
- {
- LED1=!LED1;
- LED2=!LED2;
- LED3=!LED3;
- LED4=!LED4;
- delay_ms(200);
- t++;
- if(t>=10)
- {t=0;
- LED1=1;
- LED2=1;
- LED3=1;
- LED4=1;
- break;
- }
- }
- for(ii=0;ii<64;ii++)RBuf[ii]=ii;
-
- while (1)
- {
- // tmplen=CAN1_Read(&hostid,RBuf);
- //
- // hostid = tmplen = 0;
- // memset(RBuf,0,sizeof(RBuf));//復位緩存
- // CAN1_Send_Multi_Messages(ID1,RBuf,64);
- if(FLAG_Start==0xBB)
- {
- FLAG_Start=0;
-
- CAN_ITConfig(CAN1, CAN_IT_FMP0, DISABLE); //關閉接受中斷
- // CAN_ITConfig(CAN1, CAN_IT_TME, ENABLE);
- CAN1_Send_Multi_Messages(ID1,RBuf,64);
- // CAN_ITConfig(CAN1, CAN_IT_TME, DISABLE);//關閉發送郵箱空中斷
- CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE); //開始接受中斷
- //CAN_Send_Msg(ID1,CAN_ID_EXT,CAN_RTR_DATA,8,canbuf1);
- }
- if(FLAG_Start==0xaa)
- {
- FLAG_Start=0;
- CAN_ITConfig(CAN1, CAN_IT_FMP0, DISABLE); //關閉接受中斷
- CAN_Send_Msg(ID1,CAN_ID_EXT,CAN_RTR_DATA,8,canbuf1);
- CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE); //開始接受中斷
-
- }
-
- /************************System Operation **********************************/
- t++;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
STM32F107的CAN接收發送中斷函數.rar
(425.56 KB, 下載次數: 145)
2017-6-8 16:48 上傳
點擊文件名下載附件
CAN的多幀中斷發送函數
|