欢迎来到天天文库
浏览记录
ID:40490984
大小:24.97 KB
页数:9页
时间:2019-08-03
《STM32的CAN程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include"sysdef.h" #defineMAX_MAIL_NUM 3//CAN总线调试:0=运行1=自环调试#defineCAN_DEBUG 0//CAN总线波特率:0=250kbps,1=500kbps,2=1Mbps#defineCAN1_BPS 0 unsignedcharcan1_addr=0; unsignedshort Can1_Tx_Count=0;unsignedshort Can1_Rx_Count=0; unsignedshort Can1_Send_Delay
2、=0; unsignedchar Can1_Send_Buf[10]={0xeb,0x90,0x01,0x55,0xAA};unsignedchar Can1_Recv_Buf[10]={0};externint angle_num;externunsignedint angle_data; static u8CAN_msg_num[MAX_MAIL_NUM]; //发送邮箱标记 voidCAN1_Config_init(void){ CAN_InitTypeDef CAN_Init
3、Structure; CAN_FilterInitTypeDef CAN_FilterInitStructure; /*CANregisterinit*/ CAN_DeInit(CAN1); CAN_StructInit(&CAN_InitStructure); /*CANcellinit*///36MHz500Kbps CAN_InitStructure.CAN_TTCM=DISABLE;//禁止时间触发通信模式 CAN_InitStructure
4、.CAN_ABOM=DISABLE;//软件对CAN_MCR寄存器的INRQ位进行置1随后清0后,一旦硬件检测 //到128次11位连续的隐性位,就退出离线状态 CAN_InitStructure.CAN_AWUM=DISABLE;//睡眠模式通过清除CAN_MCR寄存器的SLEEP位,由软件唤醒 CAN_InitStructure.CAN_NART=DISABLE;//CAN报文是否只发1次,不管发送的结果如何(成功/出
5、错或仲裁丢失) CAN_InitStructure.CAN_RFLM=DISABLE;//在接收到溢出时FIFO未被锁定,当接收到FIFO报文未被读出,下一个收到的报文会覆盖原有的报文 CAN_InitStructure.CAN_TXFP=DISABLE;//发送的FIFO优先级由报文的标识符来决定 #ifCAN_DEBUG CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack;#else CAN_InitStructure.CAN_M
6、ode=CAN_Mode_Normal; #endif //传输波特率 if(CAN1_BPS== 0) { CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;//重新同步跳跃宽度1个时间单位 CAN_InitStructure.CAN_BS1=CAN_BS1_12tq;//时间段1为9个时间单位 CAN_InitStructure.CAN_BS2=CAN_BS2_3tq;//时间段2为8个时间单位 CAN
7、_InitStructure.CAN_Prescaler=9;//36M/(1+12+3)/9=250kbps //36M/(1+5+2)/9=500kbps //36M(1+2+1)/9=1M } elseif(CAN1_BPS==1) { CAN_InitStructure.CAN_SJW=CAN_SJW_
8、1tq;//重新同步跳跃宽度1个时间单位 CAN_InitStructure.CAN_BS1=CAN_BS1_5tq;//时间段1为9个时间单位 CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;//时间段2为8个时间单位 CAN_InitStructure.CAN_Prescaler=9;
此文档下载收益归作者所有