关于stm32F103VET6中can1回环模式正常、普通模式异常的问题。

        一开始调试时利用回环模式,所有功能都正常,想着普通模式也应该没问题,然后开始了漫长的调试过程...

关于stm32F103VET6中can1回环模式正常、普通模式异常的问题。_第1张图片

        随后用两块板子,CAN的配置一模一样,烧录程序开始跑,发现两个板子都接收不到数据,由于身边没有can卡,其实我不知道数据有没有发出去,但是串口上可以看到数据发送成功,但没有接收的数据。

        后来我换成了两块正点原子的开发板,是STM32F103ZET6,改了下IO口配置后,发现竟然可以收到数据,我一度怀疑是不是我的板子坏了。但也说明CAN的配置是对的,那么问题很可能就出在IO口上。

        后来一查果然!!!

 

         需要重映射到PD0和PD1才能用得到CANTX和CANRX,我以为我找到了原因,然后配置了如下的IO。

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);	                   											 

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
    
    GPIO_PinRemapConfig(GPIO_Remap1_CAN1,ENABLE);

        然而,他喵的还是不行,我又回到了是不是板子坏掉了的自我怀疑。

        不停地找资料,但是兜兜转转又回到这里,发现GPIO_Remap1_CAN1??为什么是Remap1?? 1???,查了资料发现,他喵的Remap1是映射到PB8和PB9的,而我需要的是PD0和PD1。

        到这里问题解决!这就是为什么在STM32F103ZET6上可以直接跑,在VET6不行的原因。

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);	                   											 

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
    
    GPIO_PinRemapConfig(GPIO_Remap2_CAN1,ENABLE);

你可能感兴趣的:(stm32,arm,嵌入式硬件)