[N32G43x]

N32G430C8的CAN使用问题

[复制链接]
206|3
手机看帖
扫描二维码
随时随地手机跟帖
duware|  楼主 | 2022-11-24 09:48 | 显示全部楼层 |阅读模式
本帖最后由 duware 于 2022-11-24 09:59 编辑

例程中使用的是PB8和PB9,配置程序如下
    RCC_APB1_Peripheral_Clock_Enable(RCC_APB1_PERIPH_CAN);
    RCC_AHB_Peripheral_Clock_Enable(RCC_AHB_PERIPH_GPIOB);
    RCC_APB2_Peripheral_Clock_Enable(RCC_APB2_PERIPH_AFIO);

    /* configure CAN pin */
    GPIO_InitStructure.Pin            = GPIO_PIN_8;
    GPIO_InitStructure.GPIO_Mode      = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Alternate = GPIO_AF6_CAN;
    GPIO_Peripheral_Initialize(GPIOB, &GPIO_InitStructure);

    GPIO_InitStructure.Pin             = GPIO_PIN_9;
    GPIO_InitStructure.GPIO_Alternate  = GPIO_AF6_CAN;
    GPIO_Peripheral_Initialize(GPIOB, &GPIO_InitStructure);

以上代码没有问题,如果管脚改为 PA11、PA12,修改代码如下

RCC_APB1_Peripheral_Clock_Enable(RCC_APB1_PERIPH_CAN);
    RCC_AHB_Peripheral_Clock_Enable(RCC_AHB_PERIPH_GPIOA);
    RCC_APB2_Peripheral_Clock_Enable(RCC_APB2_PERIPH_AFIO);

    /* configure CAN pin */
    GPIO_InitStructure.Pin            = GPIO_PIN_11;
    GPIO_InitStructure.GPIO_Mode      = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Alternate = GPIO_AF2_CAN;
    GPIO_Peripheral_Initialize(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.Pin             = GPIO_PIN_12;
    GPIO_InitStructure.GPIO_Alternate  = GPIO_AF2_CAN;
    GPIO_Peripheral_Initialize(GPIOA, &GPIO_InitStructure);

在执行 PA12配置过程引发异常,请问这是什么原因?有技术给解答下吗

使用特权

评论回复
sy12138| | 2022-11-24 14:35 | 显示全部楼层
什么异常?不能正常通信吗

使用特权

评论回复
UFO8848| | 2022-11-24 14:38 | 显示全部楼层
看配置没啥毛病

使用特权

评论回复
duware|  楼主 | 2022-11-24 17:08 | 显示全部楼层

jlink 连机调试,执行PA12配置,这个函数  GPIO_Peripheral_Initialize(GPIOA, &GPIO_InitStructure)  会导致jlink断开,提示无法连接CPU之类。尝试过如下代码

    RCC_AHB_Peripheral_Clock_Enable(RCC_AHB_PERIPH_GPIOA);
    RCC_APB2_Peripheral_Clock_Enable(RCC_APB2_PERIPH_AFIO);

    /* configure CAN pin */
    GPIO_InitStructure.Pin            = GPIO_PIN_11;
    GPIO_InitStructure.GPIO_Mode      = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Alternate = GPIO_AF2_CAN;
    GPIO_Peripheral_Initialize(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.Pin             = GPIO_PIN_12;
    GPIO_InitStructure.GPIO_Alternate  = GPIO_AF2_CAN;
    GPIO_Peripheral_Initialize(GPIOA, &GPIO_InitStructure);
    。。。。

    RCC_APB1_Peripheral_Clock_Enable(RCC_APB1_PERIPH_CAN);
   。。。。
   配置PA12没问题,但是在执行  RCC_APB1_Peripheral_Clock_Enable(RCC_APB1_PERIPH_CAN)  这里也会   出现同样问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则