OpenEdv-开源电子网

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

CAN通信进入不了发送中断

[复制链接]

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2014-7-28
在线时间
2 小时
发表于 2015-8-8 20:34:51 | 显示全部楼层 |阅读模式
5金钱
在CAN通信时无法进入发送中断,追踪时发现RQCP寄存器位在发送成功后并不被置一。初始化函数如下:
void CAN1_Config(uint8_t sjw,uint8_t bs1,uint8_t bs2,uint16_t pres)
{

    unsigned char i=0;
    sjw-=1;
    pres-=1;
    bs1-=1;
    bs2-=1;
    RCC->APB2ENR|=1<<2;    //使能PORTA时钟  
    GPIOA->CRH&=0XFFF00FFF; 
    GPIOA->CRH|=0X000B8000;//PA11 RX,PA12 TX推挽输出    
    GPIOA->ODR|=3<<11;    
    RCC->APB1ENR|=1<<25;//使能CAN时钟 CAN使用的是APB1的时钟(max:36M)
    
    /* CAN1 RX PA11,CAN TX PA12 */

    RCC->APB2ENR|=1<<2;    //使能PORTA时钟  
       
    CAN1->MCR=0x0000; //退出睡眠模式(同时设置所有位为0)
    CAN1->MCR|=1<<0; //请求CAN进入初始化模式
while((CAN1->MSR&1<<0)==0)
{
i++;
if(i>100);//return 2;//进入初始化模式失败
}
CAN1->MCR|=0<<7; //非时间触发通信模式
CAN1->MCR|=0<<6; //软件自动离线管理
CAN1->MCR|=0<<5; //睡眠模式通过软件唤醒(清除CAN1->MCR的SLEEP位)
CAN1->MCR|=0<<4; //禁止报文自动传送
CAN1->MCR|=0<<3; //报文不锁定,新的覆盖旧的
CAN1->MCR|=0<<2; //优先级由报文标识符决定
CAN1->BTR=0x00000000;//清除原来的设置.
CAN1->BTR|=0<<30; //模式设置 0,普通模式;1,回环模式;
        
        CAN1->BTR|=(uint32_t)sjw<<24;//|(uint32_t)(bs2+1)<<20|(uint32_t)bs1<<16|(uint32_t)pres<<0; //重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位
CAN1->BTR|=bs2<<20; //Tbs2=tbs2+1个时间单位
CAN1->BTR|=bs1<<16; //Tbs1=tbs1+1个时间单位
CAN1->BTR|=pres<<0;   //分频系数(Fdiv)为brp+1
//波特率:Fpclk1/((Tbs1+Tbs2+1)*Fdiv)
CAN1->MCR&=~(1<<0); //请求CAN退出初始化模式

while((CAN1->MSR&1<<0)==1)
{
i++;
if(i>0XFFF0);//return 3;//退出初始化模式失败
}
//过滤器初始化
        CAN1->FMR|=1<<0; //过滤器组工作在初始化模式
CAN1->FA1R&=~(1<<0); //过滤器0不激活
CAN1->FS1R|=1<<0; //过滤器位宽为32位.
CAN1->FM1R|=0<<0; //过滤器0工作在标识符屏蔽位模式
CAN1->FFA1R|=0<<0; //过滤器0关联到FIFO0
CAN1->sFilterRegister[0].FR1=0X00000000;//32位ID
CAN1->sFilterRegister[0].FR2=0X00000000;//32位MASK
CAN1->FA1R|=1<<0; //激活过滤器0
CAN1->FMR&=0<<0; //过滤器组进入正常模式
        CAN1->IER|=1<<1; //FIFO0消息挂号中断允许.
        CAN1->IER|=1<<0;
MY_NVIC_Init(1,0,CAN1_RX0_IRQn,2);      //组2
        MY_NVIC_Init(1,1,CAN1_TX_IRQn,2);      //组2

}

求大神帮忙看看

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-9 22:26:12 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2014-7-28
在线时间
2 小时
 楼主| 发表于 2015-8-10 08:31:02 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
这个不知道怎么又可以进中断了,进入中断之后死在中断里面了,没见用户手册上有清标志位的地方啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-10 22:37:19 | 显示全部楼层
回复【3楼】北冥鱼:
---------------------------------
没用过发送中断。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 19:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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