duware 发表于 2022-11-24 09:48

N32G430C8的CAN使用问题

本帖最后由 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

UFO8848 发表于 2022-11-24 14:38
看配置没啥毛病

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)这里也会   出现同样问题。
页: [1]
查看完整版本: N32G430C8的CAN使用问题