GD32F105RB CAN1 CAN2 为什么接收不进中断

[复制链接]
648|15
 楼主 | 2018-3-3 09:09 | 显示全部楼层 |阅读模式
代码如下
void can_config(can_parameter_struct can_parameter, can_filter_parameter_struct can_filter)
{
    /* initialize CAN register */
    can_deinit(CAN0);
    can_deinit(CAN1);
   
    /* initialize CAN parameters */
    can_parameter.time_triggered = DISABLE;
    can_parameter.auto_bus_off_recovery = DISABLE;
    can_parameter.auto_wake_up = DISABLE;
    can_parameter.auto_retrans = DISABLE;
    can_parameter.rec_fifo_overwrite = DISABLE;
    can_parameter.trans_fifo_order = DISABLE;
    can_parameter.working_mode = CAN_NORMAL_MODE;
    can_parameter.resync_jump_width = CAN_BT_SJW_1TQ;
    can_parameter.time_segment_1 = CAN_BT_BS1_5TQ;
    can_parameter.time_segment_2 = CAN_BT_BS2_3TQ;
   
    /* 1MBps */
#if CAN_BAUDRATE == 1000
    can_parameter.prescaler = 6;
    /* 500KBps */
#elif CAN_BAUDRATE == 500
    can_parameter.prescaler = 12;
    /* 250KBps */
#elif CAN_BAUDRATE == 250
    can_parameter.prescaler = 24;
    /* 125KBps */
#elif CAN_BAUDRATE == 125
    can_parameter.prescaler = 48;
    /* 100KBps */
#elif  CAN_BAUDRATE == 100
    can_parameter.prescaler = 60;
    /* 50KBps */
#elif  CAN_BAUDRATE == 50
    can_parameter.prescaler = 120;
    /* 20KBps */
#elif  CAN_BAUDRATE == 20
    can_parameter.prescaler = 300;
#else
    #error "please select list can baudrate in private defines in main.c "
#endif  
    /* initialize CAN */
    can_init(CAN0, &can_parameter);
    can_init(CAN1, &can_parameter);
   
    /* initialize filter */
    can_filter.filter_number=0;
    can_filter.filter_mode = CAN_FILTERMODE_MASK;
    can_filter.filter_bits = CAN_FILTERBITS_32BIT;
    can_filter.filter_list_high = 0;
    can_filter.filter_list_low = 0x0000;
    can_filter.filter_mask_high = 0;
    can_filter.filter_mask_low = 0x0000;
    can_filter.filter_fifo_number = CAN_FIFO0;
    can_filter.filter_enable = ENABLE;
   
    can_filter_init(&can_filter);
   

}


void nvic_config(void)
{
    /* configure CAN0 NVIC */
    nvic_irq_enable(CAN0_RX0_IRQn,0,0);

    /* configure CAN1 NVIC */
    nvic_irq_enable(CAN1_RX0_IRQn,1,1);
}


void can_gpio_config(void)
{
    /* enable CAN clock */
    rcu_periph_clock_enable(RCU_CAN0);
    rcu_periph_clock_enable(RCU_CAN1);
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_AF);
   
    /* configure CAN0 GPIO */
    gpio_init(GPIOB,GPIO_MODE_IN_FLOATING,GPIO_OSPEED_50MHZ,GPIO_PIN_8);
    gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_9);
    gpio_pin_remap_config(GPIO_CAN0_FULL_REMAP,ENABLE);
   
    /* configure CAN1 GPIO */
  //  gpio_init(GPIOB,GPIO_MODE_IN_FLOATING,GPIO_OSPEED_50MHZ,GPIO_PIN_5);
  //  gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_6);
  //  gpio_pin_remap_config(GPIO_CAN1_REMAP,ENABLE);
}


void  can_init(void)
{
  can_gpio_config();
    /* configure NVIC */
    nvic_config();
   

    printf("\r\nGD32F10x dual CAN test, please press Wakeup key or Tamper key to start communication!\r\n");

   
    /* initialize CAN and filter */
    can_config(can_init_parameter, can_filter_parameter);
    /* enable can receive FIFO0 not empty interrupt */
    can_interrupt_enable(CAN0, CAN_INT_RFNE0);
    can_interrupt_enable(CAN1, CAN_INT_RFNE0);

}


不进中断void CAN0_RX0_IRQHandler(void) void CAN1_RX0_IRQHandler(void)为什么呢? 请大神指点,特急  谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2018-3-3 21:35 | 显示全部楼层
人呢?
| 2018-3-9 12:35 | 显示全部楼层
楼主,留QQ, 让兄弟我把实际运行测试OK的代码和工程发给你COPY。
 楼主 | 2018-3-10 17:15 | 显示全部楼层
lvben5d 发表于 2018-3-9 12:35
楼主,留QQ, 让兄弟我把实际运行测试OK的代码和工程发给你COPY。

非常感谢,不过已经搞好了
| 2018-3-17 13:22 | 显示全部楼层
这个代码的分享还是蛮不错的
| 2018-3-18 20:59 | 显示全部楼层
这种if ...elseif...的设计嵌套是不是太深了?
| 2018-3-21 21:15 | 显示全部楼层
这个没看出啥问题的啊,怎就进不了中断的呢?
| 2018-3-22 20:32 | 显示全部楼层
这是CAN总线的配置设计的
| 2018-3-22 20:33 | 显示全部楼层
我参考的了,这些代码的主要是针对相关寄存器的进行设计。
| 2018-3-22 22:09 | 显示全部楼层
这个程序代码的也没看出啥问题的啊
| 2018-3-22 23:13 | 显示全部楼层
CAN总线设计这一块的我还是盲区的,不过只要去深入了解的,怎会能熟悉的
| 2018-5-30 17:30 | 显示全部楼层
yingxg518 发表于 2018-3-10 17:15
非常感谢,不过已经搞好了

老哥,什么问题?我现在也进不去中断。
| 2018-6-21 11:09 | 显示全部楼层
楼主弄好了吗?我这页不进中断了,之前还好好的
| 2018-9-11 23:35 | 显示全部楼层
miao5061 发表于 2018-5-30 17:30
老哥,什么问题?我现在也进不去中断。

大哥,什么问题?怎么解决的接收进中断
| 2018-9-12 15:58 | 显示全部楼层
大神,您最后怎么解决的,谢谢帮助哦
| 2018-9-12 15:59 | 显示全部楼层
伊森亨特 发表于 2018-6-21 11:09
楼主弄好了吗?我这页不进中断了,之前还好好的

您怎么解决的呢?不进接收函数
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表