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

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

        随后用两块板子,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);

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值