#include "pbdata.h" 
void RCC_Configuration(void); 
void GPIO_Configuration(void); 
void NVIC_Configuration(void); 
void CAN_Configuration(void); 
 
int main(void) 
{ 
        CanTxMsg TxMessage; 
         
        RCC_Configuration();        //ϵͳʱÖÓ³õʼ»¯ 
        GPIO_Configuration();//¶Ë¿Ú³õʼ»¯ 
        NVIC_Configuration(); 
        CAN_Configuration(); 
         
        while(1) 
        { 
                TxMessage.StdId=0x02>>5; 
                TxMessage.ExtId=0; 
 
                TxMessage.IDE=CAN_ID_STD; 
                //Êý¾ÝÖ¡ 
                TxMessage.RTR=CAN_RTR_DATA; 
                TxMessage.DLC=8; 
                 
                for(b=0;b<8;b++) 
                { 
                        TxMessage.Data[b]=rx[b]; 
                }         
                CAN_Transmit(CAN1,&TxMessage);         
                delay_ms(10);  
        }         
} 
 
void RCC_Configuration(void) 
{ 
    SystemInit();//72m 
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); 
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE); 
} 
 
void GPIO_Configuration(void) 
{ 
    GPIO_InitTypeDef GPIO_InitStructure;         
        //LED 
 
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;//RX 
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; 
        GPIO_Init(GPIOA,&GPIO_InitStructure); 
 
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;//TX 
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; 
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; 
        GPIO_Init(GPIOA,&GPIO_InitStructure); 
         
} 
 
void NVIC_Configuration(void) 
{ 
           NVIC_InitTypeDef NVIC_InitStructure;  
 
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);  
 
        NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;  
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
        NVIC_Init(&NVIC_InitStructure); 
} 
 
void CAN_Configuration(void) 
{ 
   CAN_InitTypeDef CAN_InitStructure; 
   CAN_FilterInitTypeDef CAN_FilterInitStructure; 
 
   CAN_DeInit(CAN1); 
   CAN_StructInit(&CAN_InitStructure); 
 
   CAN_InitStructure.CAN_TTCM=DISABLE; 
   CAN_InitStructure.CAN_ABOM=DISABLE; 
   CAN_InitStructure.CAN_AWUM=DISABLE; 
   CAN_InitStructure.CAN_NART=DISABLE; 
   //FIFO Òç³öʱ±¨Îĸ²¸ÇÔ´Îļþ 
   CAN_InitStructure.CAN_RFLM=DISABLE; 
   CAN_InitStructure.CAN_TXFP=DISABLE; 
   CAN_InitStructure.CAN_Mode=CAN_Mode_Normal; 
 
   CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; 
   CAN_InitStructure.CAN_BS1=CAN_BS1_3tq; 
   CAN_InitStructure.CAN_BS2=CAN_BS2_2tq; 
   CAN_InitStructure.CAN_Prescaler = 48; 
 
   CAN_Init(CAN1,&CAN_InitStructure); 
 
   CAN_FilterInitStructure.CAN_FilterNumber=0; 
   CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; 
   CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; 
   CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000; 
   CAN_FilterInitStructure.CAN_FilterIdLow=0; 
   CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000; 
   CAN_FilterInitStructure.CAN_FilterMaskIdLow=0; 
   CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0; 
   CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; 
   CAN_FilterInit(&CAN_FilterInitStructure); 
   CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE); 
} 
 
 
 |   
     
  
 |