OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6137|回复: 6

STM32F105RBT CAN无法进入Initialization mode!

[复制链接]

9

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-3-30
在线时间
2 小时
发表于 2013-5-2 21:18:23 | 显示全部楼层 |阅读模式
             各位,

刚开始折腾STM32,串口的发送接收方面都已经搞定,但搞到CAN这块出了问题,问题表现在无法进入Initialization mode, 初始化函数如下:

RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; //enable PA port
//Tx PA12 //Rx PA11
GPIOA->CRH &= 0xFFF00FFF;
GPIOA->CRH |= 0x000B4000;
GPIOA->BSRR |= GPIO_BSRR_BS12; //set PA12 to high

RCC->APB1RSTR |= RCC_APB1ENR_CAN1EN; //enable CAN1 clock
CAN1->MCR = 0x0000;
CAN1->MCR |= CAN_MCR_INRQ;

while( !(((CAN1->MSR) & CAN_MSR_INAK ) == CAN_MSR_INAK ) );

表现为上面循环无法退出,请各位看看是什么原因?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-3-30
在线时间
2 小时
 楼主| 发表于 2013-5-2 21:49:39 | 显示全部楼层
执行完下面语句:
CAN1->MCR = 0x0000;
CAN1->MCR |= CAN_MCR_INRQ;

CAN1->MCR值还是0x02,表明控制器还是在sleep
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-2 23:56:53 | 显示全部楼层
回复【2楼】chunnynee:
---------------------------------
参考下我们的代码试试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-3-30
在线时间
2 小时
 楼主| 发表于 2013-5-3 11:53:37 | 显示全部楼层
参考了,还是老样子,晚上再仔细看看
回复 支持 反对

使用道具 举报

9

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-3-30
在线时间
2 小时
 楼主| 发表于 2013-5-3 22:58:33 | 显示全部楼层

看了手册后,又产生了一些问题,是关于引脚复用的。以下为例:

 

 


使用引脚复用,我的理解如下,请大家纠正:
1)首先使能引脚A的时钟--》配置PA12为alternate function方式,--》使能CAN1时钟,这时候CAN1功能才能正常使用?
2)因为项目中用到了USART1功能(使能了USART1时钟),那么此时两者会冲突,必须把其中一个外设REMAP到另外的引脚?
以上的理解对吗??谢谢。


 

回复 支持 反对

使用道具 举报

9

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-3-30
在线时间
2 小时
 楼主| 发表于 2013-5-4 14:22:27 | 显示全部楼层
有人帮忙解释下吗!!
回复 支持 反对

使用道具 举报

9

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-3-30
在线时间
2 小时
 楼主| 发表于 2013-5-4 16:57:57 | 显示全部楼层
找到问题了。
RCC->APB1RSTR |= RCC_APB1ENR_CAN1EN; //enable CAN1 clock

是复位CAN1的时钟而非使能,浪费两天时间。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-20 14:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表