newphj 发表于 2016-8-13 15:10:04

STM32F103 CAN引脚复用

STM32CuBeMX CAN引脚复用 PB8,PB9..程序不能联调,第二次下载的时候提示找不到MCU。直接引脚PA11,PA12就正常运行。搞不懂了。STM32F103VET6

johnson_gong 发表于 2016-8-17 09:37:33

估计是引用复用相关配置,还有CLK的配置问题,重影射要使能AFIO的CLK才行

newphj 发表于 2016-8-17 09:50:52

johnson_gong 发表于 2016-8-17 09:37
估计是引用复用相关配置,还有CLK的配置问题,重影射要使能AFIO的CLK才行

/* USER CODE BEGIN CAN1_MspInit 0 */
__HAL_RCC_AFIO_CLK_ENABLE();

/* USER CODE END CAN1_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_CAN1_CLK_ENABLE();

    /**CAN GPIO Configuration   
    PB8   ------> CAN_RX
    PB9   ------> CAN_TX
    */
    GPIO_InitStruct.Pin = GPIO_PIN_8;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    __HAL_AFIO_REMAP_CAN1_2();

貌似还是不行,

发表于 2016-8-17 10:34:08

楼主用的是哪个芯片?

newphj 发表于 2016-8-17 10:38:17

可以了。先把HAL_Init()-》HAL_MspInit()-》__HAL_RCC_AFIO_CLK_ENABLE();屏蔽,再在MX_CAN_Init-》HAL_CAN_Init-》HAL_CAN_MspInit里加__HAL_RCC_AFIO_CLK_ENABLE();

newphj 发表于 2016-8-17 10:38:37

安 发表于 2016-8-17 10:34
楼主用的是哪个芯片?

STM32F103VET

无薪税绵 发表于 2016-8-17 10:54:38

楼主厉害,自己解决了。

gonger 发表于 2016-8-17 13:57:39

学习了,谢谢楼主

feixiang20 发表于 2016-8-17 22:25:29

自己动手能解决,印象会更深刻啊

feixiang20 发表于 2016-8-17 22:26:27

还有,如果有硬件上的问题,也可以先检查检查
页: [1] 2
查看完整版本: STM32F103 CAN引脚复用