求帮忙!!!我的STM32f103的CAN通讯进不了中断函数

您所在的位置:网站首页 origin画四维图 求帮忙!!!我的STM32f103的CAN通讯进不了中断函数

求帮忙!!!我的STM32f103的CAN通讯进不了中断函数

2023-03-05 03:22| 来源: 网络整理| 查看: 265

我的CAN1的配置如下,不论怎么试都进不了中断函数。求大家帮忙看看 void My_CAN1_Init(uint32_t _baudRate) { //´´½¨ÉèÖýṹÌå GPIO_InitTypeDef GPIO_InitStructure; CAN_InitTypeDef CAN_InitStructure; CAN_FilterInitTypeDef CAN_FilterInitStructure; NVIC_InitTypeDef NVIC_InitStructure;

#ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 / NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else / VECT_TAB_FLASH / / Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif

// RCC_ClocksTypeDef rcc_clocks; // RCC_GetClocksFreq(&rcc_clocks); // SystemInit();

//¿ªÆôGPIOºÍCAN1µÄʱÖÓRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //RX GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÉÏÀ­ÊäÈë GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHzGPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //TX GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //ÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz GPIO_Init(GPIOA, &GPIO_InitStructure);CAN_DeInit(CAN1); CAN_StructInit(&CAN_InitStructure); CAN_InitStructure.CAN_TTCM=DISABLE; //ʱ¼ä´¥·¢Ä£Ê½ CAN_InitStructure.CAN_ABOM=ENABLE; //×Ô¶¯ÀëÏß¹ÜÀí CAN_InitStructure.CAN_AWUM=DISABLE; //×Ô¶¯»½ÐÑģʽ CAN_InitStructure.CAN_NART=DISABLE; //·Ç×Ô¶¯ÖØ´«Ä£Ê½ CAN_InitStructure.CAN_RFLM=DISABLE; //½ÓÊÜFIFOËø¶¨Ä£Ê½ CAN_InitStructure.CAN_TXFP=ENABLE; //·¢ËÍFIFOģʽ 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= 6000000 / _baudRate; //²¨ÌØÂʹ«Ê½=72M/(2*(SJW+BS1+BS2)*Prescale) CAN_Init(CAN1, &CAN_InitStructure);//ÅäÖùýÂËÆ÷CAN_FilterInitStructure.CAN_FilterNumber= 0; //Â˲¨Æ÷Ñ¡Ôñ0~13 CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; //Ö¸¶¨¹ýÂËÆ÷Ϊ±êʶ·ûÆÁ±Îģʽ CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //¹ýÂËÆ÷λ¿íΪ32λ CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000; //Òª¹ýÂ˵ÄID¸ßλ CAN_FilterInitStructure.CAN_FilterIdLow= 0x0000; //Òª¹ýÂ˵ÄIDµÍλ CAN_FilterInitStructure.CAN_FilterMaskIdHigh= 0x0000; //¹ýÂËÆ÷ÆÁ±Î±êʶ·ûµÄ¸ß16λ CAN_FilterInitStructure.CAN_FilterMaskIdLow= 0x0000; //¹ýÂËÆ÷ÆÁ±Î±êʶ·ûµÄµÍ16λ CAN_FilterInitStructure.CAN_FilterFIFOAssignment= CAN_FilterFIFO0;//É趨ÁËÖ¸Ïò¹ýÂËÆ÷µÄFIFOΪ0 CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //¹ýÂËÆ÷ʹÄÜ CAN_FilterInit(&CAN_FilterInitStructure);//CAN1ÖжÏÅäÖà 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); //CAN1 FIFOʹÄÜCAN_ClearITPendingBit(CAN1,CAN_IT_FF0);CAN_ClearITPendingBit(CAN1,CAN_IT_FOV0);CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);

}

#define Get_Gryo_Data USB_LP_CAN1_RX0_IRQHandler

void Get_Gryo_Data(void) { static int16_t x_angle_data, y_angle_data, z_angle_data, z_anglespeed_data; static float x_origin_angle, y_origin_angle, z_origin_angle, z_origin_anglespeed; CanRxMsg rx_message;

if (CAN_GetITStatus(GRYO_CAN, CAN_IT_FMP0) != RESET) {CAN_Receive(GRYO_CAN, CAN_FIFO0, &rx_message);if ((rx_message.IDE == CAN_ID_STD) && (rx_message.RTR == CAN_RTR_DATA)) //标准帧、数据帧、数据长度为8{if (rx_message.StdId == 0x401){z_angle_data = ((rx_message.Data[1]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3