下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、STM32F103和永的CAN总线使用说明1.配置CAN时钟、映射、IO口RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_USARTlIRCC_APB2Periph_GPI0AIRCC_APB2Periph_GP10BIRCC_APB2Periph_GPI0CIRCC_APB2Periph_AFI0.ENABLE);GPIO_PinRemapConfig(GPIO_Remapl.CAN1.ENABLE);打开对应IO/*ConfigureCANpin:RX*/GPI
2、O_InitStmcture.GPIO_Pin=GPIO_Pin_8;GPIO_InitStmcture.GPIO_Mode=GPIO_Modc_IPU;GPIO_Init(GPIOB.&GPIOnitStnicturc);/*ConfigureCANpin:TX*/GPIO_InitStmcture.GPIO_Pin=GPIO_Pin_9;GPIO_InitStmcture.GPIO_Mode=GPIO_Modc_AF_PP;GPIO_Init(GPIOB.&GPIOnitStnicture);2使能CAN中断向量NVICniruclure.NVIC_IRQChannel=USB_LP_CA
3、Nl_RX0_IRQn;NVICnitStructure.NVIC_IRQChannelPreemptionPriority=0;NVICnitStruclure.NVICRQChannelSubPriority=1;NVICniruclure.NVIC_IRQChannelCmd=ENABLE;NVICLInit(&NVIC_InitStructure);3.CAN硬件寄存器配置初始化CAN_DeInit(CANl);与2.0库有区别;CAN_StructInit(&CAN_InitStructure);CANnitStructure.CAN_TTCM=DISABLE;CAN_InitStr
4、ucture.CAN_ABOM=ENABLE:总线断开后自动修复:CAN_InitStructure.CAN_AWUM=DISABLE:CANnitStructure.CAN_NART=DISABLE;CANnitStructure.CAN_RFLM=DISABLE;CAN_InitStructure.CAN_TXFP=DlSABLE;CANnitStructurcCAN_Mode=:CAN_Modc_LoopBack;/CAN_Modc_Silent;/CAN_Mode_Normal;/CAN_Mode_LoopBack;/CAN_InitStructure.CAN_SJW=CAN_SJW_
5、ltq;CANnitStructure.CAN_BS1=CAN_BSl_6tq;CANnitStructure.CAN_BS2=CAN_BS2_4tq:CANnitStructure.CAN_Presca!er=CAN_100k_Prescaler;CAN_Init(CAN1,&CANJnitStructure);4过滤器初始化CAN_FilterInitStructure.CAN_FilterNumber=O;CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;/CAN_FilterMode_IdList;标识符模式;/C
6、AN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdList;/r展模式滤波器CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit:/32位过滤器;CAN_FilterInitStructure.CAN_FilterIdHigh=0 x0260;适用TxMessage.StdId=Ox13;标识符寄存器:CAN_FilterInitStructure.CAN_FilterIdLow=OxOOOO;CAN_FilterInitStructure.CAN_FilterMa
7、skIdHigh=0 x0260;屏蔽寄存器(不屏蔽);CAN_FilterInitStructure.CAN_FilterMaskIdLow=OxOOOO;严屏蔽寄存器0表示屏蔽,1表示不屏蔽*/CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;CAN_FilterInit(&CAN_FilterInitStructure);5打开CAN接收中断CANTConfig(CANl.CANJT_FN1PO.ENABLE);6编辑发送数据(标识符
8、模式和扩展模式)TxMessage.StdId=Ox10;TxMessage.RTR=CAN_RTR_DATA;TxMessage.IDE=CAN_ID_STD:/(标识符模式)/CAN_ID_EXT(扩展标识符模式)TxMessage.DLC=8:TxMessage.DataO=0 x01;TxMessage.Data1=0 x01;TxMessage.Data2=0 x01;TxMessage.Data3=0 x01;TxMessage.Data4=0 x01;TxMessage.Data5=0 x01;TxMessage.Data=0 x01;TxMessage.Data7=0 x01;
9、CAN_Transmit(CAN1、&TxMessage);7查询是否发送完成i=0;while(CAN_TransmitStatus(CAN1,TransmitMailbox)!=CANTXOK)&(i!=OxFFF)与2.0库有异;判断发送数据成功i+;if(CAN_TransmitStatus(CAN1,TransmitMailbox)=CANTXPENDING)表示数据正在发送中。&接收数据voidreceive(void)u32i;CanRxMsgRxMessage;i=0;while(CAN_MessagePending(CANl,CAN_FIFOO)1)&(i!=OxFF)冷+:
10、if(i=OxFF)表示没有收到数据elseRxMessage.StdId=OxOO:RxMessage.IDE=CAN_ID_STD;RxMessage.DLC=O;RxMessage.Data0=0 x00:RxMessage.Data1=0 x00:RxMessage.Data2=0 x00;RxMessage.Data3=0 x00;RxMessage.Data4=0 x00;RxMessage.Data5=0 x00;RxMessage.Data6=0 x00;RxMessage.Data7=0 x00:CAN_Receive(CANI、CAN_FIFOO.&RxMessage);9
11、中断函?voidUSB_LP_CANl_RXO_IRQHandler(void)CanRxMsgRxMessage;RxMessage.StdId=OxOO:RxMessage.ExtId=OxOO;RxMessage.IDE=O;RxMessage.DLC=O;RxMessage.FMI=O;RxMessage.Data0=0 x00;RxMessage.Data1=0 x00:RxMessage.Data2=0 x00:RxMessage.Data3=OxOO:RxMessage.Data4=0 x00;RxMessage.Data5=OxOO:RxMessage.Data6=0 x00:
12、RxMessage.Data7=0 x00:CAN_Receive(CAN1,CAN_FIFOO.&RxMessage);if(RxMessage.IDE=CAN_ID_STD)ret=I;elseret=0;发送ID与过滤器设置的对应求值算法:发送数据的ID要求:TxMessage.StdId=0 x00:TxMessage.ExtId=Ox1234;TxMessage.IDE=0 x04:TxMessage.RTR=0;过滤器所对应的配置:32位,标识符模式31:2423:1615:87:0STID10:3STID2:0EXID17:13EXID12:5EXID4:0IDERTR00000
13、0000000000001001000110100100CAN.FilterldHighCAN.FilterldLow000091A4得出:CAN_FilterInitStructure.CAN_FilterIdHigh=OxOOOO;CAN_FilterInitStructure.CAN_FilterIdLow=0 x91A4;备注总线模式说明:查询CAN总线上的数据,不对总线进行任何操作的设置:总线模式选择CAN_Mode_Silent不要在总线上发送数据;过滤器设置为:CAN_FilterInitStructure.CAN_FilterIdHigh=OxOOOO;CAN_FilterIn
14、itStructure.CAN_FilterIdLow=0 x0000;CAN_FilterInitStructure.CAN_FilterMaskIdHigh=OxOOOO;CAN_FilterInitStructure.CAN_FilterMaskIdLow=OxOOOO:开启接收函数:receive();voidreceive(void)u32i,Error;CanRxMsgRxMessage;i=0;while(CAN_MessagePending(CANLCAN_FIFOO)1)&(i!=OxFF)有异;判断接收到数据i+:if(i=OxFF)/status=CAN_GetFlagStatus(CAN1、CAN_FLAG_BOF);/Error=CAN_GetError(CAN1);/Usart1Send32Bit(Error);elseRxMessage.StdId=OxOO;RxMe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年纳米传感器在海洋环境监测中的抗干扰设计
- 2025 八年级地理上册青藏地区的清洁能源外送通道课件
- 2026游戏原画师招聘面试题及答案
- 2026校招:中国电子科技集团面试题及答案
- 2026校招:深圳农商银行面试题及答案
- 2026年大学大一(工程造价)工程计量基础综合测试题及答案
- 2026年天津职业大学单招职业适应性测试题库附答案详解(a卷)
- 2026校招:上海投资咨询集团面试题及答案
- 2026校招:上海交易集团试题及答案
- 2026年太原幼儿师范高等专科学校单招职业倾向性考试题库附答案详解(综合卷)
- 有色金属矿山水文地质勘探规范
- 体育赛事策划与管理全套课件
- 《 语文(基础模块)下册》中职语文课程全套教学课件
- 高等职业学校汽车智能技术专业实训教学条件建设标准
- 钢构厂房施工合同范本(2024版)
- 夜间施工安全培训
- 《论语》全文原文版
- 盐城工业职业技术学院单招职业技能测试参考试题库(含答案)
- 《人体中的化学反应》课件
- (沪教牛津版)深圳市小学1-6年级英语单词默写表(英文+中文+默写)
- 游泳救生员培训课件
评论
0/150
提交评论