打印

请版主帮忙分析CAN的中断初始化,谢谢。

[复制链接]
1857|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xqhwmk|  楼主 | 2009-12-31 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xqhwmk 于 2010-1-1 12:44 编辑

00}
沙发
ST_ARM| | 2009-12-31 10:22 | 只看该作者
本帖最后由 ST_ARM 于 2009-12-31 10:24 编辑

CAN的那部分怎么没有贴出来?

另外:
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  
#ifdef  VECT_TAB_RAM  
  /* Set the Vector Table base location at 0x20000000 */
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  /* VECT_TAB_FLASH  */
  /* Set the Vector Table base location at 0x08000000 */
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif
  /* Configure one bit for preemption priority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  
添加上面这一行。

使用特权

评论回复
板凳
xqhwmk|  楼主 | 2009-12-31 10:25 | 只看该作者
CAN_InitTypeDef        CAN_InitStructure;
  CAN_FilterInitTypeDef  CAN_FilterInitStructure;
  CanTxMsg TxMessage;
  u8 i=0;
  /* CAN register init */
  CAN_DeInit();
  CAN_StructInit(&CAN_InitStructure);
  /* CAN cell init */
  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_Normal;
  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=1;
  CAN_Init(&CAN_InitStructure);
  /* CAN filter init */
  CAN_FilterInitStructure.CAN_FilterNumber=1;
  CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
  CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
  CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
  CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
  CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
  CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;
  CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
  CAN_FilterInit(&CAN_FilterInitStructure);
  /* CAN FIFO0 message pending interrupt enable */
  CAN_ITConfig(CAN_IT_FMP0, ENABLE);
  /* transmit 1 message */
  TxMessage.StdId=0x12;
  TxMessage.ExtId=0x34;
  TxMessage.IDE=CAN_ID_EXT;
  TxMessage.RTR=CAN_RTR_DATA;
  TxMessage.DLC=2;
  TxMessage.Data[0]=0xDE;
  TxMessage.Data[1]=0xCA;
  CAN_Transmit(&TxMessage);
  /* initialize the value that will be returned */
  ret=0xFF;
      
  /* receive message with interrupt handling */
  i=0;
  while((ret==0xFF)&&(i<0XFFF))
    i++;
  if (i==0xFFF)
   ret=0;  
  /* disable interrupt handling */
  CAN_ITConfig(CAN_IT_FMP0, DISABLE);
  return (TestStatus)ret;

使用特权

评论回复
地板
xqhwmk|  楼主 | 2009-12-31 10:26 | 只看该作者
本帖最后由 xqhwmk 于 2010-1-1 12:44 编辑

不好意思,上面的不是。
补充正确的:

使用特权

评论回复
5
ST_ARM| | 2009-12-31 10:27 | 只看该作者
请问CAN的代码是在同一个函数里的,还是不同的函数里的,贴出时将函数完整贴出。

使用特权

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

本版积分规则

2

主题

4

帖子

0

粉丝