硬汉嵌入式论坛

 找回密码
 立即注册
查看: 9986|回复: 13
收起左侧

[有问必答] 有谁知道我的CAN这么设置为什么进不了中断么?

[复制链接]

2

主题

52

回帖

2

积分

初级会员

(⊙o⊙)…

积分
2
发表于 2014-8-18 15:35:01 | 显示全部楼层 |阅读模式
void PhyCanGpioClockInit(void)    //CAN端口设置
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE);    //设置APB1时钟用于CAN1端口使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA, ENABLE);   //设置APB2时钟由于GPIOA端口使能
   
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;        //PA11 CAN1接收端口
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //PA11功能设置
GPIO_Init(GPIOA, &GPIO_InitStructure);          //设置GPIOA端口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;        //PA12 CAN1发送端口
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;      //PA12 CAN1发送端口
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;      //端口速度
GPIO_Init(GPIOA, &GPIO_InitStructure);          //设置端口

void CanIRQInit(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;  //中断源
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  //先占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;     //从占优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;       //中断是否开通
NVIC_Init(&NVIC_InitStructure);

CAN_ITConfig(CAN1,CAN_IT_FMP0, ENABLE);   //CAN中断开通设置中断源的动作条件
}


void PhyCanPeripheralInit(unsigned short canBaud)   //CAN基本参数
{
CAN_DeInit(CAN1);               //CAN恢复默认值
CAN_StructInit(&CAN_InitStructure);      //恢复结构体默认值
CAN_InitStructure.CAN_TTCM = DISABLE;     //TTCM 时间触发通讯模式 enable/disable
CAN_InitStructure.CAN_ABOM = ENABLE;     //ABOM 自动离线管理 enable/disable
CAN_InitStructure.CAN_AWUM = DISABLE;     //AWUM 自动唤醒
CAN_InitStructure.CAN_NART = DISABLE;     //NART 禁止报文失败自动重传
CAN_InitStructure.CAN_RFLM = DISABLE;     //RFLM FIFO锁定 enable:当前数据未提取,丢弃下一报文
                        //        disable当前数据未提取,下一报文覆盖当前报文
CAN_InitStructure.CAN_TXFP = DISABLE;     //发送FIFO优先级 enable优先级由发送请求顺序决定
                        //        disable优先级由报文标识符决定
CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; //CAN工作模式  
CanBaudAutoCal(canBaud);           //CAN波特率 50/125/250/500/1000
CAN_Init(CAN1,&CAN_InitStructure);      //设置CAN1参数

CanIRQInit();                 //CAN中断设置
}


void PhyCanRecId(unsigned long canAcr,unsigned long canAmr)
{
CAN_FilterInitTypeDef CAN_FilterInitStructure; CAN_FilterInitStructure.CAN_FilterNumber=0;
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh=((canAcr&0xffff0000)>>16);
CAN_FilterInitStructure.CAN_FilterIdLow=canAcr&0xffff;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=(((~canAmr)&0xffff0000)>>16);
CAN_FilterInitStructure.CAN_FilterMaskIdLow=(~canAmr)&0xffff;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;    //选择接收FIFO
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);
}

void USB_LP_CAN1_RX0_IRQHandler(void)
{

unsigned char i;
RxMessage.StdId=0x00;
RxMessage.ExtId=0x00;
RxMessage.IDE=0;
RxMessage.DLC=0;
RxMessage.FMI=0;
LED_CAN_SET;    //CAN灯灭
Runflag++;         //程序运行周期

for(i=0;i<8;i++)
{
  RxMessage.Data=0x00;
}
//CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0); //清除FIFO0消息挂号中断标志位
CAN_Receive(CAN1,CAN_FIFO0, &RxMessage);
phy_st_CanMsg.us_RxId = RxMessage.StdId;
phy_st_CanMsg.us_RxLenth = RxMessage.DLC;   
for(i=0;i<8;i++)
{
  phy_st_CanMsg.uc_Rxmessage=RxMessage.Data;
}
phy_st_CanMsg.us_RxOver = 0x01;  
for(;;);

}
蒲公英
回复

使用道具 举报

1

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2014-8-18 16:13:15 | 显示全部楼层
路过~~~
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107603
QQ
发表于 2014-8-19 10:24:07 | 显示全部楼层
楼主美女,你用的这个是F1的can吗
回复

使用道具 举报

2

主题

52

回帖

2

积分

初级会员

(⊙o⊙)…

积分
2
 楼主| 发表于 2014-8-19 13:11:20 | 显示全部楼层

回 eric2013 的帖子

eric2013:楼主美女,你用的这个是F1的can吗 (2014-08-19 10:24)
是啊
蒲公英
回复

使用道具 举报

2

主题

52

回帖

2

积分

初级会员

(⊙o⊙)…

积分
2
 楼主| 发表于 2014-8-19 13:28:28 | 显示全部楼层

回 eric2013 的帖子

eric2013:楼主美女,你用的这个是F1的can吗 (2014-08-19 10:24)
有什么指教呢?
蒲公英
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107603
QQ
发表于 2014-8-20 11:30:10 | 显示全部楼层

Re:回 eric2013 的帖子

feiqi:

有什么指教呢?

官方有F1使用CAN中断例子的,或者参考我们的这个例子吧:http://www.armbbs.cn/forum.php?mod=viewthread&tid=3
1.jpg
回复

使用道具 举报

2

主题

52

回帖

2

积分

初级会员

(⊙o⊙)…

积分
2
 楼主| 发表于 2014-8-20 14:09:06 | 显示全部楼层
V5里是不是没有关于CAN的例程啊,因为之前买的板是V5的,现在又用F1,本来想参照一下
蒲公英
回复

使用道具 举报

2

主题

52

回帖

2

积分

初级会员

(⊙o⊙)…

积分
2
 楼主| 发表于 2014-8-20 14:10:09 | 显示全部楼层

回 eric2013 的帖子

eric2013:官方有F1使用CAN中断例子的,或者参考我们的这个例子吧:http://www.armbbs.cn/forum.php?mod=viewthread&tid=3


....... (2014-08-20 11:30)
V5里是不是没有关于CAN的例程啊,因为之前买的板是V5的,现在又用F1,本来想参照一下
蒲公英
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107603
QQ
发表于 2014-8-20 17:34:33 | 显示全部楼层

回 feiqi 的帖子

feiqi:V5里是不是没有关于CAN的例程啊,因为之前买的板是V5的,现在又用F1,本来想参照一下
 (2014-08-20 14:10) 
V5里面没有CAN
回复

使用道具 举报

2

主题

52

回帖

2

积分

初级会员

(⊙o⊙)…

积分
2
 楼主| 发表于 2014-8-21 09:22:23 | 显示全部楼层

回 eric2013 的帖子

eric2013:V5里面没有CAN (2014-08-20 17:34)
好的,知道了,谢谢![s:150]
蒲公英
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107603
QQ
发表于 2014-8-21 17:54:48 | 显示全部楼层

回 feiqi 的帖子

feiqi:好的,知道了,谢谢![s:150]  (2014-08-21 09:22) 
后得把这些没有完善起来的例子都完善起来。
回复

使用道具 举报

2

主题

52

回帖

2

积分

初级会员

(⊙o⊙)…

积分
2
 楼主| 发表于 2014-8-22 11:16:18 | 显示全部楼层

回 eric2013 的帖子

eric2013:后得把这些没有完善起来的例子都完善起来。 (2014-08-21 17:54)
嗯,赞一个[s:151]
蒲公英
回复

使用道具 举报

116

主题

800

回帖

1148

积分

至尊会员

积分
1148
QQ
发表于 2014-8-22 13:09:06 | 显示全部楼层
CAN F4和F1基本一样,可以直接参考
回复

使用道具 举报

2

主题

52

回帖

2

积分

初级会员

(⊙o⊙)…

积分
2
 楼主| 发表于 2014-8-22 13:20:21 | 显示全部楼层

回 jcx0324 的帖子

jcx0324:CAN F4和F1基本一样,可以直接参考 (2014-08-22 13:09)
嗯,谢谢!
蒲公英
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-7 16:28 , Processed in 0.221620 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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