访问手机版页面
你的位置:老古开发网 > STM32单片机与CAN总线 > 正文  
调试STM32F107的CAN模块
内容导读:
花了两天的时间,调试了开发板的CAN模块,先是调试CAN1、CAN2,最后让CAN1和CAN2通信。期间遇到了很多问题,还有很多问题没解决。1、使用扩展模式,但是TxMessage.StdId接收到始终是00,其他的TxMessage.IDE TxMessa

花了两天的时间,调试了开发板的CAN模块,先是调试CAN1、CAN2,最后让CAN1和CAN2通信。期间遇到了很多问题,还有很多问题没解决。
1、使用扩展模式,但是TxMessage.StdId接收到始终是00,其他的TxMessage.IDE TxMessage.DLC都是对的,包括数据。不知道为什么,网上查了一下,有位仁兄和我遇到的问题一样,如果有人看到此贴,还望不吝赐教。所以我最后都是只用标准格式。
2、CAN2的CAN_FilterNumber必须设置为14,CAN_FilterFIFOAssignment=CAN_FIFO0;也不知为什么,呵呵,还要好好看书啊。
3、对于中断,代码如下:
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

NVIC_InitStructure.NVIC_IRQChannel = CAN2_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel=CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

}
居然也可以,NVIC_InitStructure.NVIC_IRQChannel怎么可以同时赋予不同的值呢,还没搞懂。

不管怎么说,二者可以通信,拔掉线子收不到数据,线子一插上,就可以收到数据,通信果然很稳定啊。


标签: can模块,stm32f107,
来源:互联网 作者:karen 时间:2018/10/23 10:00:02
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐