打印
[STM32F0]

072 can无法成功初始化

[复制链接]
2587|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CAN, pi, ni, IO, gp
刚刚学习072,can无法成功初始化,怎么回事,死在了这里,CAN_Init
void CAN_Configuration(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE);
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_4);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_4);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
   
  /* 定义 CAN 控制器和过滤器初始化结构体 */
    CAN_InitTypeDef        CAN_InitStructure;
    CAN_FilterInitTypeDef  CAN_FilterInitStructure;
   
    /* CAN 寄存器复位 */
    CAN_DeInit(CAN);
    CAN_StructInit(&CAN_InitStructure);
   
    /*     
    *    CAN 控制器初始化:
    *  
    *    失能时间触发通讯模式
    *    失能自动离线管理
    *    失能自动唤醒模式
    *    失能非自动重传输模式
    *    失能接收 FIFO 锁定模式
    *    失能发送 FIFO 优先级
    *    CAN 硬件工作在环回模式
    *    重新同步跳跃宽度 1 个时间单位
    *    时间段 1 为 8 个时间单位
    *    时间段 2 为 7 个时间单位
    *    分频数为5  
    */
   
    CAN_InitStructure.CAN_TTCM = DISABLE;
    CAN_InitStructure.CAN_ABOM = DISABLE;
    CAN_InitStructure.CAN_AWUM = DISABLE;
    CAN_InitStructure.CAN_NART = DISABLE;
    CAN_InitStructure.CAN_RFLM = DISABLE;
    CAN_InitStructure.CAN_TXFP = DISABLE;
    CAN_InitStructure.CAN_Mode = CAN_Mode_LoopBack;
    CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
    CAN_InitStructure.CAN_BS1 = CAN_BS1_8tq;
    CAN_InitStructure.CAN_BS2 = CAN_BS2_7tq;
    CAN_InitStructure.CAN_Prescaler = 5;
    CAN_Init(CAN, &CAN_InitStructure);
CAN_Init返回失败值,怎么回事?

沙发
huangxz| | 2014-7-3 22:04 | 只看该作者
死了还返回失败吗

使用特权

评论回复
板凳
CS_Police| | 2014-7-6 19:49 | 只看该作者
程序没问题啊,Copy到我目前学习的CAN应用工程中,可以正常运行,看是不是调用库函数出了问题???
附上自己测试程序,可以发送数据

main.zip

1.76 KB

使用特权

评论回复
地板
airwill| | 2014-7-6 20:09 | 只看该作者
调试器跟踪一下, 看看CAN_Init返回失败值时, 到底问题出在哪里, 再查手册分析排除.

使用特权

评论回复
5
liguang02|  楼主 | 2014-7-6 22:36 | 只看该作者
CS_Police 发表于 2014-7-6 19:49
程序没问题啊,Copy到我目前学习的CAN应用工程中,可以正常运行,看是不是调用库函数出了问题???
附上自 ...

你使用的是stm32 072的芯片么?可以整个工程发上来么?库函数使用什么版本的

使用特权

评论回复
6
liguang02|  楼主 | 2014-7-6 22:37 | 只看该作者
huangxz 发表于 2014-7-3 22:04
死了还返回失败吗

还返回失败,CAN_Init会有返回值的,你可以看看定义

使用特权

评论回复
7
liguang02|  楼主 | 2014-7-6 22:49 | 只看该作者
CS_Police 发表于 2014-7-6 19:49
程序没问题啊,Copy到我目前学习的CAN应用工程中,可以正常运行,看是不是调用库函数出了问题???
附上自 ...

你是用的can库函数是哪一个版本的?为什么我用了你的main函数还是初始化不成功的

QQ截图20140706224735.png (34.39 KB )

初始化程序死在了这里

初始化程序死在了这里

can.JPG (87.32 KB )

can库函数

can库函数

使用特权

评论回复
8
zhaoqich| | 2015-7-10 16:12 | 只看该作者
兄弟,问一下,我也遇到了你的072芯片CAN无法初始化的问题,while (((CANx->MSR & CAN_MSR_INAK) == (uint16_t)CAN_MSR_INAK) && (wait_ack != INAK_TIMEOUT))
   {
     wait_ack++;   
   }
无法接受应答,请问你是怎么解决的???万分感谢

使用特权

评论回复
9
rojum32| | 2015-7-17 17:15 | 只看该作者
兄弟,您这边用的是STM32F072C8T6的IC么?我也有遇到类似问题,希望能一起沟通,互相学习;QQ395877987

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

307

帖子

2

粉丝