can的初始化我是把之前用的103zet6的程序拿过来的。

就是用的引脚不同,引脚的初始化不同,rbt6使用的是PA11,PA12,是默认功能,不需要复用。PB8,PB9是复用(CANRX,CANTX在Remap栏)

所以初始化的时候用了

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE); 
   /GPIO_PinRemapConfig(GPIO_Remap1_CAN1,ENABLE);

//CAN初始化
//tsjw:重新同步跳跃时间单元.范围:CAN_SJW_1tq~ CAN_SJW_4tq
//tbs2:时间段2的时间单元.   范围:CAN_BS2_1tq~CAN_BS2_8tq;
//tbs1:时间段1的时间单元.   范围:CAN_BS1_1tq ~CAN_BS1_16tq
//brp :波特率分频器.范围:1~1024;  tq=(brp)*tpclk1
//波特率=Fpclk1/((tbs1+1+tbs2+1+1)*brp);
//mode:CAN_Mode_Normal,普通模式;CAN_Mode_LoopBack,回环模式;
//Fpclk1的时钟在初始化的时候设置为36M,如果设置CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_9tq,4,CAN_Mode_LoopBack);
//则波特率为:36M/((8+9+1)*4)=500Kbps
//返回值:0,初始化OK;
//其他,初始化失败;
/*CAN_RX--PA11
CAN_TX--PA12
与主控器不同之处:主控器板子用的PB8,PB9,是复用引脚,PA11 PA12的默认功能里有can,不用复用
*/
u8 CAN_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode)
{ GPIO_InitTypeDef          GPIO_InitStructure; CAN_InitTypeDef         CAN_InitStructure;CAN_FilterInitTypeDef     CAN_FilterInitStructure;#if CAN_RX0_INT_ENABLE NVIC_InitTypeDef         NVIC_InitStructure;#endif/* CAN Periph clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE); //| RCC_APB2Periph_AFIORCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);// GPIO_PinRemapConfig(GPIO_Remap1_CAN1,ENABLE); /* Configure CAN pin: RX */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure CAN pin: TX */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOA, &GPIO_InitStructure); //CAN单元设置CAN_InitStructure.CAN_TTCM=DISABLE;         //非时间触发通信模式  CAN_InitStructure.CAN_ABOM=ENABLE;            //软件自动离线管理  ENABLE:离线自动恢复 CAN_InitStructure.CAN_AWUM=DISABLE;           //睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位)CAN_InitStructure.CAN_NART=DISABLE;          //允许报文自动传送 ENABLE:禁止CAN_InitStructure.CAN_RFLM=DISABLE;         //报文不锁定,新的覆盖旧的  CAN_InitStructure.CAN_TXFP=ENABLE;         //优先级由报文标识符决定 ENABLE:优先级由发送的请求顺序来决定 CAN_InitStructure.CAN_Mode= mode;           //模式设置: mode:0,普通模式;1,回环模式; //设置波特率                                CAN_InitStructure.CAN_SJW=tsjw;              //重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位  CAN_SJW_1tq   CAN_SJW_2tq CAN_SJW_3tq CAN_SJW_4tqCAN_InitStructure.CAN_BS1=tbs1;            //Tbs1=tbs1+1个时间单位CAN_BS1_1tq ~CAN_BS1_16tqCAN_InitStructure.CAN_BS2=tbs2;               //Tbs2=tbs2+1个时间单位CAN_BS2_1tq ~   CAN_BS2_8tqCAN_InitStructure.CAN_Prescaler=brp;        //分频系数(Fdiv)为brp+1 CAN_Init(CAN1, &CAN_InitStructure);         //初始化CAN1 CAN时钟是36M//   CAN_FilterInitStructure.CAN_FilterNumber=0;                            //过滤器0
//  CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;      //屏蔽位模式
//  CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;         //32位宽
//  CAN_FilterInitStructure.CAN_FilterIdHigh=0x01 <<5;                   //32位ID
//  CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
//  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x1f <<5;               //32位MASK
//  CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
//  CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0; //过滤器0关联到FIFO0
//  CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;               //激活过滤器0CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;    //设定过滤器组为列表模式CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;  //过滤器位宽为16位过滤器一个CAN_FilterInitStructure.CAN_FilterIdHigh = 0;                      //设定过滤器标识符高位(32为高位段,16位为第一个)CAN_FilterInitStructure.CAN_FilterIdLow = 0x01 << 3 | CAN_ID_EXT;   // 扩展帧CAN_FilterInitStructure.CAN_FilterMaskIdHigh= 0;                   //只管低5位,其他都是0CAN_FilterInitStructure.CAN_FilterMaskIdLow= 0x1f << 3;          //CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_Filter_FIFO0;//过滤器FIFO0指向过滤器0CAN_FilterInitStructure.CAN_FilterNumber = 1;                       //指定待初始化的过滤器,范围1~13CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;              //使能过滤器CAN_FilterInit(&CAN_FilterInitStructure);                            //滤波器初始化    #if CAN_RX0_INT_ENABLE CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);                               //FIFO0消息挂号中断允许.            NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;           // 主优先级为2NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                    // 次优先级为0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);#endifreturn 0;
}   

stm32f103rbt6使用can相关推荐

  1. [开源]STM32F103RBT6最小系统,LEDx2,KEYx4

    STM32F103RBT6最小系统,调试通过,可以SWD模式下载程序,支持串口,一键下载. stm32f103rbt6最小系统链接:http://pan.baidu.com/s/1qYCHeHY 密码 ...

  2. STM32F103RBT6 mcu芯片

    主流性能系列,ARM Cortex-M3 MCU,带128千字节闪存.72 MHz CPU.电机控制.USB和CAN STM32F103xx中密度性能系列集成了工作频率为72 MHz的高性能ARM C ...

  3. STM32F103RBT6 串口1正常接收,发送过程也很正常,但TXD引脚没有波形

    STM32F103RBT6 串口1正常接收,发送过程也很正常,但TXD引脚没有波形,这个程序前几天还是正常工作,百思不得其解.后来找来开发板串口通讯例程对比发现GPIO初始化缺少一句,GPIO_Ini ...

  4. STM32F103RBT6 定时器 Timer2 源程序

    STM32F103RBT6定时器Timer2的使用. 复制代码 这里说下定时器定时时间: (1)STM32时钟为:72MHz,则每次振荡时间为:T=1/f=1/72MHz,振荡72M个周期才为:1S ...

  5. stm32f103rbt6开发板学习

    一  介绍 ARM: A    R    M STM32  CORTEX-A53 M: 应用于嵌入式工控领域,以单片机的价格实现32bit的性能 A:应用在高大上的领域, 性能强悍.音视频的处理,AI ...

  6. STM32F103RBT6型号说明及特征;

    STM32F103RBT6型号说明: STM32系列专为要求高性能.低成本.低功耗的嵌入式应用设计的ARMCortex?-M0,M0+,M3,M4和M7内核,主流产品(STM32F0.STM32F1. ...

  7. STM32CubeMX开发stm32f103rbt6 CAN例程(二)

    1.STM32CubeMX配置 2.生成代码查看 3.编写代码 程序下载:http://download.csdn.net/download/white_loong/10137468 4.使用CAN分 ...

  8. 蓝桥杯旧嵌入式板STM32F103RBT6驱动练习笔记

    LED 注意GPIO口的初始化 C口对应8--15Pin 锁存器:GPIOD_Pin_2 初始化函数后应使用LED_Control(0xff,0)配置led LCD和LED冲突解决方案 void LC ...

  9. STM32F103RBT6+TFT彩屏资料下载|程序

    前两星期刚学了1.44寸TFT彩屏,总结一下,不好勿喷,欢迎交流. 先附上效果图                             中文测试                            ...

最新文章

  1. Android 逐帧动画(Frame)
  2. jquery.form 和MVC4做无刷新上传DEMO
  3. 回老家还是继续北上广?
  4. html5新增的js,HTML5新增属性data-*和js/jquery之间的交互及注意事项
  5. ios13全选手势_iOS13系统5个简单实用的技巧 快速选择/三指操作/批量删除短信/文字转表情...
  6. ActiveMQ学习-Network connectors(1)
  7. docker部署ubuntu并连接ssh远程调试代码
  8. js ul 清缓存_JavaScript使用ul中li标签实现删除效果
  9. 无法访问hadoop yarn8088端口的解决方法
  10. 1、登录模块测试用例
  11. Idea Debug 时 JAVA对象转Json字符串 的操作
  12. python掷骰子实验_Python基础(十二) 模拟掷骰子demo
  13. 给高特键轴开盖的操作技巧
  14. 高考计算机会考等级划分标准,高中学业水平考试等级是怎么划分的
  15. mysql在触发器中调用存储过程_mysql 触发器中调用存储过程
  16. HDU 5055 Bob and math problem(构造)
  17. 还在用网易云音乐客户端?out了~
  18. ES6 (十三)Set 和 Map 数据结构、WeakSet 和 WeakMap、WeakRef、FinalizationRegistry
  19. MPU6050开发 -- 数据分析
  20. RPT-4-D-2T高清录播一体机

热门文章

  1. java中草药美白淡斑紧肤膏_中药美白淡斑的方法
  2. 计算机辅助设计与制造实训,最新计算机辅助设计与制造上机实验报告.doc
  3. faro shuffle
  4. 医疗信息通信设计和人体域网络的发展介绍
  5. 《我的第一本算法书》阅读笔记 1-8 二叉查找树
  6. Windows7下解决所有游戏不能全屏的问题。
  7. InDesign 教程如何覆盖母版页项目?
  8. 滴滴服务分计算机制,滴滴服务分改版!新功能上线!司机:太好了
  9. 项目管理总结——如何处理项目突发事件
  10. 【渗透测试基础-3】渗透测试信息收集的内容及方法