版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
詳解stm32的CAN控制器(程序分享)首先簡(jiǎn)單介紹一下CAN總線,關(guān)于CAN總線是誰(shuí)發(fā)明的,CAN總線的歷史,CAN總線的發(fā)展,CAN總線的應(yīng)用場(chǎng)合,這些,通通不說(shuō)。這里只是以我個(gè)人理解,簡(jiǎn)單說(shuō)說(shuō)CAN通信。CAN總線的端點(diǎn)沒(méi)有地址(除非自己在幀里定義地址),CAN總線通信不用地址,用標(biāo)識(shí)符,不是單獨(dú)的誰(shuí)發(fā)給誰(shuí),而是,你總是發(fā)送給整個(gè)網(wǎng)絡(luò)。然后每個(gè)節(jié)點(diǎn)都有過(guò)濾器,對(duì)網(wǎng)絡(luò)上的傳播的幀的標(biāo)識(shí)符進(jìn)行過(guò)濾,自己想要什么樣的幀,可以設(shè)置自己的過(guò)濾器,接收相關(guān)的幀信息。如果兩個(gè)節(jié)點(diǎn)同時(shí)發(fā)送怎么辦?這個(gè)不用我們擔(dān)心,CAN控制器會(huì)自己仲裁,讓高優(yōu)先級(jí)的幀先發(fā)。然后我們可以了解一下stm32的CAN控制器。如上圖所示,stm32有兩個(gè)can控制器,can1(主),和can2(從),其中過(guò)濾器的設(shè)置是通過(guò)can1來(lái)設(shè)置,其他工作模式,波特率等,可以各自設(shè)置。每個(gè)控制器有三個(gè)發(fā)送郵箱,兩個(gè)fifo,每個(gè)fifo有三個(gè)接收郵箱。發(fā)送:選擇一個(gè)空的發(fā)送郵箱,把幀信息寫(xiě)到該發(fā)送郵箱的寄存器里,請(qǐng)求發(fā)送,控制器就會(huì)根據(jù)標(biāo)識(shí)符的優(yōu)先級(jí)把幀先后發(fā)送出去。接收:如果接收到的幀的標(biāo)識(shí)符能過(guò)過(guò)濾表的一系列過(guò)濾,該幀信息就會(huì)保存在fifo接收郵箱的寄存器里。過(guò)濾器:stm32f407共有28組過(guò)濾器,每組過(guò)濾器可以設(shè)置關(guān)聯(lián)到fifo0或者fifo1,每組都包括兩個(gè)32位存儲(chǔ)器,可以配置成一個(gè)32位有位屏蔽功能的標(biāo)識(shí)符過(guò)濾器,或者兩個(gè)32位完全匹配的標(biāo)識(shí)符過(guò)濾器,或者兩個(gè)16位有位屏蔽功能的標(biāo)識(shí)符過(guò)濾器,或者四個(gè)16位完全匹配的標(biāo)識(shí)符過(guò)濾器。如下圖所示:我所說(shuō)的完全匹配的意思是,接收到的幀的標(biāo)識(shí)符每一位都要跟過(guò)濾器對(duì)應(yīng)的位一樣,才能過(guò)得了這個(gè)過(guò)濾器。有位屏蔽功能的意思是一個(gè)寄存器放標(biāo)識(shí)符,一個(gè)放屏蔽掩碼,屏蔽掩碼為1的位對(duì)應(yīng)的接收到的幀的標(biāo)識(shí)符的位與對(duì)應(yīng)的放標(biāo)識(shí)符的寄存器的位一致,就能通過(guò)。傳輸一位的時(shí)間和波特率的計(jì)算:CAN控制器的波特率是由APB時(shí)鐘線和CAN位時(shí)序寄存器CAN_BTR的TS2[3:0]、TS1[2:0]和BRP[9:0]確定的,其中,TS1[2:0]定義了時(shí)間段1占用多少個(gè)時(shí)間單元,TS2[3:0]定義了時(shí)間段2占用多少個(gè)時(shí)間單元,BRP[9:0]定義對(duì)APB1時(shí)鐘的分頻。PS:設(shè)置波特率為1M其中Tpclk為APB1的時(shí)鐘周期,假設(shè)為T(mén)pclk=1/42M0≦TS1≦70≦TS2≦150≦BRP≦1021根據(jù)以上數(shù)據(jù),有(TS2+TS1+3)(BRP+1)=42令BRP=2,有TS2+TS1=11令TS1=8,TS2=3設(shè)置步驟:1.設(shè)置中斷優(yōu)先級(jí)分組(如果之前沒(méi)有設(shè)置),這個(gè)最好一個(gè)程序里只在開(kāi)頭設(shè)置一次。2.使能相關(guān)GPIO時(shí)鐘。3.選擇相關(guān)GPIO引腳的復(fù)用功能。4.設(shè)置相關(guān)GPIO引腳為復(fù)用模式。5.設(shè)置相關(guān)GPIO引腳的速度,方式。6.設(shè)置主控制寄存器MCR,進(jìn)入初始化模式7.等待進(jìn)入初始化模式8.設(shè)置波特率。9.其他設(shè)置。10.如果要用到中斷,在中斷使能寄存器IER中使能相關(guān)中斷響應(yīng)。11.如果要用到中斷,設(shè)置相關(guān)中斷優(yōu)先級(jí)(NVIC_IP)。12.如果要用到中斷,使能相關(guān)中斷(NVIC_ISER)。13.設(shè)置主控制寄存器MCR,進(jìn)入正常工作模式。14.設(shè)置FMR,使過(guò)濾器組工作在初始化模式。15.設(shè)置FMR的CAN2SB,確定CAN2的過(guò)濾器組從哪一組開(kāi)始。16.設(shè)置用到的過(guò)濾器組的工作方式。17.設(shè)置用到的過(guò)濾器組的位寬。18.給fifo0和fifo2劃分(關(guān)聯(lián))過(guò)濾組。19.禁用用到的過(guò)濾器組。20.設(shè)置過(guò)濾器組的標(biāo)識(shí)符,幀類型等。21.使能相關(guān)過(guò)濾器組。22.設(shè)置FMR,使過(guò)濾器組工作在正常模式。23.如果要用中斷,編寫(xiě)中斷服務(wù)函數(shù)(函數(shù)名是固定的)。24.中斷服務(wù)函數(shù)里檢查是哪個(gè)中斷。25.編寫(xiě)相應(yīng)服務(wù)程序。電路請(qǐng)參見(jiàn)本博客:小工具之——CAN收發(fā)器程序:[plain]viewplaincopy/************************************標(biāo)題:操作CAN的練習(xí)軟件平臺(tái):IARforARM6.21硬件平臺(tái):stm32f4-discovery主頻:168M描述:通過(guò)硬件收發(fā)器連接CAN1,CAN2組成一個(gè)兩個(gè)端點(diǎn)的網(wǎng)絡(luò)CAN1循環(huán)發(fā)出數(shù)據(jù)幀CAN2接收過(guò)濾數(shù)據(jù)幀用uart把CAN2接收到的數(shù)據(jù)幀發(fā)到超級(jí)終端author:小船data:2012-08-14*************************************/#include《stm32f4xx.h》#include“MyDebugger.h”#defineRECEIVE_BUFFER_SIZE20u32CAN2_receive_buffer[RECEIVE_BUFFER_SIZE][4];u8UART_send_buffer[1800];u8Consumer=0;u8Producer=0;u32Gb_TimingDelay;voidDelay(uint32_tnTime);voidTIM7_init();//定時(shí)1su32get_rece_data();voidCAN_GPIO_config();voidmain(){u32empty_box;SysTick_Config(SystemCoreClock/1000);//設(shè)置systemtick一毫秒中斷SCB-》AIRCR=0x05FA0000|0x400;//中斷優(yōu)先級(jí)分組搶占:響應(yīng)=3:1MyDebugger_Init();TIM7_init();MyDebugger_Message(“\n\rtesting.。。.。。\n\r”,sizeof(“\n\rtesting.。。.。。\n\r”)/sizeof(char));CAN_GPIO_config();RCC-》APB1ENR|=((1《《25)|(1《《26));//使能CAN1、CAN2時(shí)鐘CAN1-》MCR=0x00000000;/*請(qǐng)求進(jìn)入初始化模式禁止報(bào)文自動(dòng)重傳自動(dòng)喚醒模式*/CAN1-》MCR|=((1《《0)|(1《《4)|(1《《5));CAN1-》MCR&=~(1《《16);//在調(diào)試時(shí),CAN照常工作while(?。–AN1-》MSR&0xfffffffe))//等待進(jìn)入初始化模式{MyDebugger_LEDs(orange,on);}MyDebugger_LEDs(orange,off);/*正常模式重新同步跳躍寬度(1+1)tqTS2[2:0]=3TS1[3:0]=8BRP[9:0]=2ps:tq=(BRP[9:0]+1)xtPCLK,tBS2=tqx(TS2[2:0]+1),tBS1=tqx(TS1[3:0]+1),NominalBitTime=1×tq+tBS1+tBS2,BaudRate=1/NominalBitTime波特率設(shè)為1M*/CAN1-》BTR=((0《《30)|(0x01《《24)|(3《《20)|(8《《16)|(2《《0));CAN1-》MCR&=~(0x00000001);//正常工作模式CAN2-》MCR=0x00000000;/*請(qǐng)求進(jìn)入初始化模式禁止報(bào)文自動(dòng)重傳自動(dòng)喚醒模式*/CAN2-》MCR|=((1《《0)|(1《《4)|(1《《5));CAN2-》MCR&=~(1《《16);//在調(diào)試時(shí),CAN照常工作while(!(CAN2-》MSR&0xfffffffe))//等待進(jìn)入初始化模式{MyDebugger_LEDs(orange,on);}MyDebugger_LEDs(orange,off);/*正常模式重新同步跳躍寬度(1+1)tqTS2[2:0]=3TS1[3:0]=8BRP[9:0]=2ps:tq=(BRP[9:0]+1)xtPCLK,tBS2=tqx(TS2[2:0]+1),tBS1=tqx(TS1[3:0]+1),NominalBitTime=1×tq+tBS1+tBS2,BaudRate=1/NominalBitTime波特率設(shè)為1M*/CAN2-》BTR=((0《《30)|(0x01《《24)|(3《《20)|(8《《16)|(2《《0));CAN2-》IER&=0x00000000;/*FIFO1消息掛號(hào)中斷使能FIFO1滿中斷使能FIFO1溢出中斷使能*/CAN2-》IER|=((1《《4)|(1《《5)|(1《《6));NVIC-》IP[65]=0xa0;//搶占優(yōu)先級(jí)101,響應(yīng)優(yōu)先級(jí)0NVIC-》ISER[2]|=(1《《1);//使能中斷線65,也就是can2_rx1中斷CAN2-》MCR&=~(0x00000001);//正常工作模式//總共有28組過(guò)濾器CAN1-》FMR|=1;//過(guò)濾器組工作在初始化模式CAN1-》FMR&=0xffffc0ff;//CAN2的過(guò)濾器組從14開(kāi)始CAN1-》FMR|=(14《《8);CAN1-》FM1R|=(1《《14);//過(guò)濾器組14的寄存器工作在標(biāo)識(shí)符列表模式//位寬為16位,2個(gè)32位分為四個(gè)16位寄存器,過(guò)濾四個(gè)標(biāo)識(shí)符//CAN1-》FS1R|=(1《《15);//過(guò)濾器組15為單個(gè)32位寄存器,用于擴(kuò)展標(biāo)識(shí)符CAN1-》FFA1R=0x0fffc000;//0~13號(hào)過(guò)濾器組關(guān)聯(lián)到fifo0,14~27號(hào)過(guò)濾器組關(guān)聯(lián)到fifo1CAN1-》FA1R&=~(1《《14);//禁用過(guò)濾器組14/*過(guò)濾器組0寄存器分為4個(gè)十六位過(guò)濾器:標(biāo)識(shí)符列表:過(guò)濾器編號(hào)匹配標(biāo)準(zhǔn)標(biāo)識(shí)符RTRIDEEXID[17:15]00x7cb(11111001011b)數(shù)據(jù)幀標(biāo)準(zhǔn)標(biāo)識(shí)符000b10x4ab(10010101011b)數(shù)據(jù)幀標(biāo)準(zhǔn)標(biāo)識(shí)符000b20x7ab(11110101011b)數(shù)據(jù)幀標(biāo)準(zhǔn)標(biāo)識(shí)符000b30x40b(10000001011b)數(shù)據(jù)幀標(biāo)準(zhǔn)標(biāo)識(shí)符000b*/CAN1-》sFilterRegister[14].FR1&=0x00000000;CAN1-》sFilterRegister[14].FR2&=0x00000000;CAN1-》sFilterRegister[14].FR1|=((0x7cb《《5)|(0《《4)|(0《《3));CAN1-》sFilterRegister[14].FR1|=((0x4ab《《21)|(0《《20)|(0《《19));CAN1-》sFilterRegister[14].FR2|=((0x7ab《《5)|(0《《4)|(0《《3));CAN1-》sFilterRegister[14].FR2|=((0x40b《《21)|(0《《20)|(0《《19));CAN1-》FA1R|=(1《《14);//使能過(guò)濾器組14CAN1-》FMR&=~1;//過(guò)濾器組正常工作while(1){/*選擇空的發(fā)送郵箱:標(biāo)準(zhǔn)標(biāo)識(shí)符0x7ab(11110101011b)數(shù)據(jù)幀不使用擴(kuò)展標(biāo)識(shí)符*/if(CAN1-》TSR&((1《《26)|(1《《27)|(1《《28))){empty_box=((CAN1-》TSR》》24)&0x00000003);CAN1-》sTxMailBox[empty_box].TIR=(0x7ab《《21);CAN1-》sTxMailBox[empty_box].TDTR&=0xfffffff0;CAN1-》sTxMailBox[empty_box].TDTR|=0x00000008;//發(fā)送數(shù)據(jù)長(zhǎng)度為8CAN1-》sTxMailBox[empty_box].TDLR=0x12345678;CAN1-》sTxMailBox[empty_box].TDHR=0x9abcdef0;CAN1-》sTxMailBox[empty_box].TIR|=(1《《0);//請(qǐng)求發(fā)送}else{MyDebugger_LEDs(orange,on);}Delay(100);/*選擇空的發(fā)送郵箱:標(biāo)準(zhǔn)標(biāo)識(shí)符0x4ab(10010101011b)數(shù)據(jù)幀不使用擴(kuò)展標(biāo)識(shí)符*/if(CAN1-》TSR&((1《《26)|(1《《27)|(1《《28))){empty_box=((CAN1-》TSR》》24)&0x00000003);CAN1-》sTxMailBox[empty_box].TIR=(0x4ab《《21);CAN1-》sTxMailBox[empty_box].TDTR&=0xfffffff0;CAN1-》sTxMailBox[empty_box].TDTR|=0x00000008;//發(fā)送數(shù)據(jù)長(zhǎng)度為8CAN1-》sTxMailBox[empty_box].TDLR=0x56781234;CAN1-》sTxMailBox[empty_box].TDHR=0x9abcdef0;CAN1-》sTxMailBox[empty_box].TIR|=(1《《0);//請(qǐng)求發(fā)送}else{MyDebugger_LEDs(orange,on);}Delay(100);/*選擇空的發(fā)送郵箱:標(biāo)準(zhǔn)標(biāo)識(shí)符0x7cb(10010101011b)數(shù)據(jù)幀不使用擴(kuò)展標(biāo)識(shí)符*/if(CAN1-》TSR&((1《《26)|(1《《27)|(1《《28))){empty_box=((CAN1-》TSR》》24)&0x00000003);CAN1-》sTxMailBox[empty_box].TIR=(0x7cb《《21);CAN1-》sTxMailBox[empty_box].TDTR&=0xfffffff0;CAN1-》sTxMailBox[empty_box].TDTR|=0x00000006;//發(fā)送數(shù)據(jù)長(zhǎng)度為6CAN1-》sTxMailBox[empty_box].TDLR=0x56781234;CAN1-》sTxMailBox[empty_box].TDHR=0x00009abc;CAN1-》sTxMailBox[empty_box].TIR|=(1《《0);//請(qǐng)求發(fā)送}else{MyDebugger_LEDs(orange,on);}Delay(100);/*選擇空的發(fā)送郵箱:標(biāo)準(zhǔn)標(biāo)識(shí)符0x40b(10000001011b)數(shù)據(jù)幀不使用擴(kuò)展標(biāo)識(shí)符*/if(CAN1-》TSR&((1《《26)|(1《《27)|(1《《28))){empty_box=((CAN1-》TSR》》24)&0x00000003);CAN1-》sTxMailBox[empty_box].TIR=(0x40b《《21);CAN1-》sTxMailBox[empty_box].TDTR&=0xfffffff0;CAN1-》sTxMailBox[empty_box].TDTR|=0x00000004;//發(fā)送數(shù)據(jù)長(zhǎng)度為4CAN1-》sTxMailBox[empty_box].TDLR=0x56781234;CAN1-》sTxMailBox[empty_box].TDHR=0x00000000;CAN1-》sTxMailBox[empty_box].TIR|=(1《《0);//請(qǐng)求發(fā)送}else{MyDebugger_LEDs(orange,on);}Delay(100);}}/****************************************函數(shù)名:CAN_GPIO_config參數(shù):無(wú)返回值:無(wú)功能:設(shè)置CAN1,2控制器用到IO口CAN1_TX---------PD1CAN1_RX---------PB8CAN2_TX---------PB13CAN2_RX---------PB5****************************************/voidCAN_GPIO_config(){RCC-》AHB1ENR|=((1《《1)|(1《《3));//使能GPIOB、D時(shí)鐘GPIOB-》AFR[0]|=0x00900000;//AF9GPIOB-》AFR[1]|=0x00900009;GPIOD-》AFR[0]|=0x00000090;GPIOB-》MODER&=0xF3FCF3FF;//第二功能GPIOB-》MODER|=0x08020800;GPIOD-》MODER&=0xFFFFFFF3;GPIOD-》MODER|=0x00000008;GPIOB-》OSPEEDR&=0xF3FCF3FF;//50MGPIOB-》OSPEEDR|=0x08020800;GPIOD-》OSPEEDR&=0xFFFFFFF3;GPIOD-》OSPEEDR|=0x00000008;GPIOB-》PUPDR&=0xF3FCF3FF;//上拉GPIOB-》PUPDR|=0x04010400;GPIOD-》PUPDR&=0xFFFFFFF3;GPIOD-》PUPDR|=0x00000004;}/****************************************函數(shù)名:CAN2_RX1_IRQHandler參數(shù):無(wú)返回值:無(wú)功能:CAN2fifo1接收中斷處理把信息存進(jìn)循環(huán)隊(duì)列****************************************/voidCAN2_RX1_IRQHandler(){if(CAN2-》RF1R&(0x00000003))//接收到新的消息,fifo1非空{(diào)Producer++;if(Producer==RECEIVE_BUFFER_SIZE)Producer=0;if(Producer!=Consumer){CAN2_receive_buffer[Producer][0]=CAN2-》sFIFOMailBox[1].RIR;CAN2_receive_buffer[Producer][1]=CAN2-》sFIFOMailBox[1].RDTR;CAN2_receive_buffer[Producer][2]=CAN2-》sFIFOMailBox[1].RDLR;CAN2_receive_buffer[Producer][3]=CAN2-》sFIFOMailBox[1].RDHR;}else{if(Producer==0)Producer=RECEIVE_BUFFER_SIZE;Producer--;MyDebugger_LEDs(blue,on);}CAN2-》RF1R|=(1《《5);//釋放郵箱}if(CAN2-》RF1R&(1《《3))//fifo0滿{MyDebugger_LEDs(red,on);CAN2-》RF1R&=~(1《《3);}if(CAN2-》RF1R&(1《《4))//fifo0溢出{MyDebugger_LEDs(red,on);CAN2-》RF1R&=~(1《《4);}}/****************************************函數(shù)名:TIM7_init參數(shù):無(wú)返回值:無(wú)功能:初始化定時(shí)器7作1s定時(shí)用****************************************/voidTIM7_init(){RCC-》APB1ENR|=(1《《5);//打開(kāi)TIM7時(shí)鐘TIM7-》PSC=8399;//對(duì)時(shí)鐘84M進(jìn)行8400分頻,使得計(jì)數(shù)頻率為10kTIM7-》ARR=10000;//定時(shí)一秒TIM7-》CNT=0;//清空計(jì)數(shù)器TIM7-》CR1|=(1《《7);//自動(dòng)重裝載預(yù)裝載使能TIM7-》DIER|=1;//使能中斷NVIC-》IP[55]=0xe0;NVIC-》ISER[1]|=(1《《(55-32));TIM7-》CR1|=1;//開(kāi)始計(jì)時(shí)}/****************************************函數(shù)名:TIM7_IRQHandler參數(shù):無(wú)返回值:無(wú)功能:定時(shí)器7中斷處理1s定時(shí)到把can2收到的信息轉(zhuǎn)換格式用usrt發(fā)送到超級(jí)終端顯示****************************************/voidTIM7_IRQHandler(void){u32length;if(TIM7-》SR){length=get_rece_data();MyDebugger_Message(UART_send_buffer,length);TIM7-》SR&=~(0x0001);}}/****************************************函數(shù)名:get_rece_data參數(shù):無(wú)返回值:length整理后要發(fā)送數(shù)據(jù)的長(zhǎng)度功能:把循環(huán)隊(duì)列的信息取出進(jìn)行格式轉(zhuǎn)換把信息存到uart發(fā)送緩沖區(qū)****************************************/u32get_rece_data(){u8filter_No;u8Data_length;chari;u32length=0;constcharascii[16]={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};while(1){if(Producer!=Consumer){Consumer++;if(Consumer==RECEIVE_BUFFER_SIZE)Consumer=0;UART_send_buffer[length++]=‘\n’;UART_send_buffer[length++]=‘\r’;//FilterNo.xxUART_send_buffer[length++]=‘F’;UART_send_buffer[length++]=‘i’;UART_send_buffer[length++]=‘l’;UART_send_buffer[length++]=‘t’;UART_send_buffer[length++]=‘e’;UART_send_buffer[length++]=‘r’;UART_send_buffer[length++]=‘’;UART_send_buffer[length++]=‘N’;UART_send_buffer[length++]=‘o’;UART_send_buffer[length++]=‘?!?filter_No=(CAN2_receive_buffer[Consumer][1]》》8)&0x000000ff;UART_send_buffer[length++]=filter_No%100/10+‘0’;UART_send_buffer[length++]=filter_No%10+‘0’;UART_send_buffer[length++]=‘\n’;UART_send_buffer[length++]=‘\r’;//DataLength:xUART_send_buffer[length++]=‘D’;UART_send_buffer[length++]=‘a(chǎn)’;UART_send_buffer[length++]=‘t’;UART_send_buffer[length++]=‘a(chǎn)’;UART_send_buffer[length++]=‘L’;UART_send_buffer[length++]=‘e’;UART_send_buffer[length++]=‘n’;UART_send_buffer[length++]=‘g’;UART_send_buffer[length++]=‘t’;UART_send_buffer[length++]=‘h’;UART_send_buffer[length++]=‘:’;Data_length=CAN2_receive_buffer[Consumer][1]&0x0000000f;UART_send_buffer[length++]=Data_length%10+‘0’;UART_send_buffer[length++]=‘\n’;UART_send_buffer[length++]=‘\r’;if(CAN2_receive_buffer[Consumer][0]&(1《《1)){UART_send_buffer[length++]=‘R’;UART_send_buffer[length++]=‘e’;UART_send_buffer[length++]=‘m’;UART_send_buffer[length++]=‘o’;UART_send_buffer[length++]=‘t’;UART_send_buffer[length++]=‘e’;UART_send_buffer[length++]=‘F’;UART_send_buffer[length++]=‘r’;UART_send_buffer[length++]=‘a(chǎn)’;UART_send_buffer[length++]=‘m’;UART_send_buffer[length++]=‘e’;}else{UART_send_buffer[length++]=‘D’;UART_send_buffer[length++]=‘a(chǎn)’;UART_send_buffer[length++]=‘t’;UART_send_buffer[length++]=‘a(chǎn)’;UART_send_buffer[length++]=‘F’;UART_send_buffer[length++]=‘r’;UART_send_buffer[length++]=‘a(chǎn)’;UART_send_buffer[length++]=‘m’;UART_send_buffer[length++]=‘e’;}UART_send_buffer[length++]=‘\n’;UART_send_buffer[length++]=‘\r’;if(CAN2_receive_buffer[Consumer][0]&(1《《2)){UART_send_buffer[length++]=‘e’;UART_send_buffer[length++]=‘x’;UART_send_buffer[length++]=‘t’;UART_send_buffer[length++]=‘’;UART_send_buffer[length++]=‘I’;UART_send_buffer[length++]=‘D’;UART_send_buffer[length++]=‘:’;UART_send_buffer[length++]=ascii[CAN2_receive_buffer[Consumer][0]》》31];UART_send_buffer[length++]=ascii[(CAN2_receive_buffer[Consumer][0]》》27)&0x0000000f];UART_send_buffer[length++]=ascii[(CAN2_receive_buffer[Consumer][0]》》23)&0x0000000f];UART_send_buffer[length++]=ascii[(CAN2_receive_buffer[Consumer][0]》》19)&0x0000000f];UART_send_buffer[length++]=ascii[(CAN2_receive_buffer[Consumer][0]》》15)&0x0000000f];UART_send_buffer[length++]=ascii[(CAN2_receive_buffer[Consumer][0]》》11)&0x0000000f];UART_send_buffer[length++]=ascii[(CAN2_receive_buffer[Consumer][0]》》7)&0x0000000f];UART_send_buffer[length++]=ascii[(CAN2_receive_buffer[Consumer][0]》》3)&0x0000000f];}else{UART_send_b
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度滑雪場(chǎng)設(shè)施裝修安全防護(hù)合同3篇
- 2025年度早餐店加盟連鎖承包合同范本4篇
- 2025年度智能車(chē)間承包環(huán)保技術(shù)改造協(xié)議4篇
- 2024-2028年中國(guó)無(wú)線電接收機(jī)行業(yè)發(fā)展前景預(yù)測(cè)及投資戰(zhàn)略規(guī)劃研究報(bào)告
- 中國(guó)太陽(yáng)能空調(diào)項(xiàng)目可行性研究報(bào)告建議書(shū)
- 2025年度個(gè)人二手房定金買(mǎi)賣(mài)合同書(shū)標(biāo)準(zhǔn)化版2篇
- 2025年度個(gè)人借款聯(lián)保合同(附財(cái)產(chǎn)抵押)4篇
- 2025年山東國(guó)新抱犢食品有限公司招聘筆試參考題庫(kù)含答案解析
- 二零二五版苗木種植基地水資源利用與節(jié)水技術(shù)合同4篇
- 2025年寧夏昊陽(yáng)資產(chǎn)管理有限公司招聘筆試參考題庫(kù)含答案解析
- 公司組織架構(gòu)圖(可編輯模版)
- 1汽輪機(jī)跳閘事故演練
- 陜西省銅川市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 禮品(禮金)上交登記臺(tái)賬
- 普通高中英語(yǔ)課程標(biāo)準(zhǔn)詞匯表
- 北師大版七年級(jí)數(shù)學(xué)上冊(cè)教案(全冊(cè)完整版)教學(xué)設(shè)計(jì)含教學(xué)反思
- 2023高中物理步步高大一輪 第五章 第1講 萬(wàn)有引力定律及應(yīng)用
- 青少年軟件編程(Scratch)練習(xí)題及答案
- 浙江省公務(wù)員考試面試真題答案及解析精選
- 系統(tǒng)性紅斑狼瘡-第九版內(nèi)科學(xué)
- 全統(tǒng)定額工程量計(jì)算規(guī)則1994
評(píng)論
0/150
提交評(píng)論