我自己作的試驗(yàn)有問題沒有解決:
dm9000 發(fā)完之后,不產(chǎn)生中斷,為什么?而且通過判斷nsr,也讀不到到發(fā)送完畢的標(biāo)志。
另一個(gè)問題是:一旦啟動(dòng)發(fā)送,程序就會(huì)不斷地產(chǎn)生recv的中斷。這個(gè)問題經(jīng)過寫入isr寄存器得到解決。但依然不明白。
一、dm9000和ARM的連線。
DM9000可以直接與ISA總線相連,也可以與大多數(shù)CPU相連。在這里,我們當(dāng)然是要讓DM9000與s3c2440相連接了。dm9000與arm之間的連線主要有三部分:
1. 地址線,主要是AEN和CMD兩根線。
DM9000對(duì)外來說只有兩個(gè)端口——地址口和數(shù)據(jù)口,地址口用于輸入內(nèi)部寄存器的地址,而數(shù)據(jù)口則完成對(duì)某一寄存器的讀寫。DM9000的CMD引腳用來區(qū)分這兩個(gè)端口,當(dāng)CMD引腳為0時(shí),DM9000的數(shù)據(jù)線上傳輸?shù)氖羌拇嫫鞯刂罚?dāng)CMD引腳為1時(shí),傳輸?shù)氖亲x寫數(shù)據(jù)。我們把DM9000的A8和A9接為高電平,把A4~A7接為低電平,并且把DM9000的AEN接到s3c2440的nGCS4引腳上,則DM9000的端口基址為0x2xxxx300,如果再把DM9000的CMD引腳接到s3c2440的ADDR2引腳上,則我們就可以定義DM9000的這兩個(gè)端口地址,它們分別為:
#define DM_ADDR_PORT (*((volatile unsigned short *) 0x20000300)) //地址口
#define DM_DATA_PORT (*((volatile unsigned short *) 0x20000304)) //數(shù)據(jù)口
其實(shí)這個(gè)地址中2與3之間的幾個(gè)0 可以換成任意的數(shù)字(經(jīng)過了測(cè)試)。
2. 數(shù)據(jù)線:arm的數(shù)據(jù)線直接和dm9000的數(shù)據(jù)線相連,LDATA0~LDATA15。 這樣就可以很快的傳輸數(shù)據(jù)。 其實(shí)也可以認(rèn)為對(duì)于dm9000,它的數(shù)據(jù)線和地址線是復(fù)用的。因?yàn)椋琧md為0時(shí),數(shù)據(jù)線上傳輸?shù)木褪且x寫的dm9000的寄存器地址;cmd為1時(shí),數(shù)據(jù)線上傳輸?shù)木褪菙?shù)據(jù)。
如果要寫入DM9000中的某個(gè)寄存器,則先把該寄存器的地址賦予DM_ADDR_PORT,然后再把要寫入的數(shù)據(jù)賦予DM_DATA_PORT即可。讀取DM9000中的某個(gè)寄存器也類似。下面的函數(shù)的作用分別是DM9000的讀、寫寄存器操作:
//寫DM9000寄存器
void __inline dm_reg_write(unsigned char reg, unsigned char data)
{
DM_ADDR_PORT = reg; //將寄存器地址寫到地址端口
DM_DATA_PORT = data; //將數(shù)據(jù)寫到數(shù)據(jù)端口
}
//讀DM9000寄存器
unsigned char __inline dm_reg_read(unsigned char reg)
{
DM_ADDR_PORT = reg;
return DM_DATA_PORT; //將數(shù)據(jù)從數(shù)據(jù)端口讀出
}
3. 中斷信號(hào)。 dm9000的INT引腳與ARM的一個(gè)外部中斷相連,我們用到的中斷主要是發(fā)送完畢和接收完畢后產(chǎn)生的中斷。
二、dm9000的初始化
下面是dm9000的初始化過程。
void dm_init(void)
{
dm_reg_write(DM9000_NCR,1); //軟件復(fù)位DM9000
delay(30); //延時(shí)至少20μs
dm_reg_write(DM9000_NCR,0); //清除復(fù)位位
dm_reg_write(DM9000_NCR,1); //為了確保復(fù)位正確,再次復(fù)位
delay(30);
dm_reg_write(DM9000_NCR,0);
dm_reg_write(DM9000_GPCR,1); //設(shè)置GPIO0為輸出
dm_reg_write(DM9000_GPR,0); //激活內(nèi)部PHY
dm_reg_write(DM9000_NSR,0x2c); //清TX狀態(tài)
dm_reg_write(DM9000_ISR,0xf); //清中斷狀態(tài)
dm_reg_write(DM9000_RCR,0x39); //設(shè)置RX控制
dm_reg_write(DM9000_TCR,0); //設(shè)置TX控制
dm_reg_write(DM9000_BPTR,0x3f);
dm_reg_write(DM9000_FCTR,0x3a);
dm_reg_write(DM9000_FCR,0xff);
dm_reg_write(DM9000_SMCR,0x00);
dm_reg_write(DM9000_PAR1,0x00); //設(shè)置MAC地址:00-01-02-03-04-05
dm_reg_write(DM9000_PAR2,0x01);
dm_reg_write(DM9000_PAR3,0x02);
dm_reg_write(DM9000_PAR4,0x03);
dm_reg_write(DM9000_PAR5,0x04);
dm_reg_write(DM9000_PAR6,0x05);
dm_reg_write(DM9000_NSR,0x2c); //再次清TX狀態(tài)
dm_reg_write(DM9000_ISR,0xf); //再次清中斷狀態(tài)
dm_reg_write(DM9000_IMR,0x81); //打開接受數(shù)據(jù)中斷
}
三、發(fā)包和收包的過程
DM9000內(nèi)部有16k大小的SRAM用于接受和發(fā)送數(shù)據(jù)緩存。其中3k用于發(fā)包,13k用于收包。此外,用于發(fā)包的3k中,可以緩存兩個(gè)packet。通常我們用的方法是在程序中維護(hù)一個(gè)包個(gè)數(shù)變量packet_cnt,當(dāng)發(fā)包時(shí),直接寫入sram,然后發(fā)送。產(chǎn)生發(fā)送完畢后,判斷packet_cnt。如果packet_cnt>0,就接著繼續(xù)發(fā)。
當(dāng)需要連續(xù)發(fā)送或接收數(shù)據(jù)時(shí),我們需要分別把DM9000寄存器MWCMD或MRCMD賦予數(shù)據(jù)端口,這樣就指定了SRAM中的某個(gè)地址,并且在傳輸完一個(gè)數(shù)據(jù)后,指針會(huì)指向SRAM中的下一個(gè)地址,從而完成了連續(xù)訪問數(shù)據(jù)的目的。但當(dāng)我們?cè)诎l(fā)送或接受一個(gè)數(shù)據(jù)后,指向SRAM的數(shù)據(jù)指針不需要變化時(shí),則要把MWCMDX或MRCMDX賦予數(shù)據(jù)端口。下面的程序?yàn)镈M9000發(fā)送數(shù)據(jù)的函數(shù),它的兩個(gè)輸入?yún)?shù)分別為要發(fā)送數(shù)據(jù)數(shù)組首地址和數(shù)據(jù)數(shù)組長(zhǎng)度。在這里我們已經(jīng)知道數(shù)據(jù)的寬為16位,它是由DM9000的硬件引腳設(shè)置實(shí)現(xiàn)的。
1. 發(fā)包。下面是趙老師的程序:
void dm_tran_packet(unsigned char *datas, int length)
{
int i;
dm_reg_write(DM9000_IMR, 0x80); //在發(fā)送數(shù)據(jù)過程中禁止網(wǎng)卡中斷
dm_reg_write(DM9000_TXPLH, (length>>8) & 0x0ff); //設(shè)置發(fā)送數(shù)據(jù)長(zhǎng)度
dm_reg_write(DM9000_TXPLL, length & 0x0ff);
DM_ADDR_PORT = DM9000_MWCMD; //發(fā)送數(shù)據(jù)緩存賦予數(shù)據(jù)端口
//發(fā)送數(shù)據(jù)
for(i=0;i delay(50); DM_DATA_PORT = datas[i]|(datas[i+1]<<8); //8位數(shù)據(jù)轉(zhuǎn)換為16位數(shù)據(jù)輸出 } dm_reg_write(DM9000_TCR, 0x01); //把數(shù)據(jù)發(fā)送到以太網(wǎng)上 while((dm_reg_read(DM9000_NSR) & 0x0c) == 0) ; //等待數(shù)據(jù)發(fā)送完成 delay(50); dm_reg_write(DM9000_NSR, 0x2c); //清除TX狀態(tài) dm_reg_write(DM9000_IMR, 0x83); //打開DM9000接收數(shù)據(jù)中斷和發(fā)送中斷 } 我在試驗(yàn)的過程中, 發(fā)現(xiàn)程序會(huì)在下面這句話死循環(huán): while((dm_reg_read(DM9000_NSR) & 0x0c) == 0) ; //等待數(shù)據(jù)發(fā)送完成 后來,我改成了中斷的方式進(jìn)行發(fā)送: void dm_tran_packet(char *datas, int length) { int i; dm_reg_write(DM9000_IMR, 0x80); //在發(fā)送數(shù)據(jù)過程中禁止網(wǎng)卡中斷 dm_reg_write(DM9000_TXPLH, (length>>8) & 0x0ff); //設(shè)置發(fā)送數(shù)據(jù)長(zhǎng)度 dm_reg_write(DM9000_TXPLL, length & 0x0ff); DM_ADDR_PORT = DM9000_MWCMD; //發(fā)送數(shù)據(jù)緩存賦予數(shù)據(jù)端口 //發(fā)送數(shù)據(jù) for(i=0;i delay(50); DM_DATA_PORT = datas[i]|(datas[i+1]<<8); //8位數(shù)據(jù)轉(zhuǎn)換為16位數(shù)據(jù)輸出 } dm_reg_write(DM9000_TCR, 0x01); //把數(shù)據(jù)發(fā)送到以太網(wǎng)上 dm_reg_write(DM9000_IMR, 0x83); } void dm_trans_done(void) { uart_printf("%s ", __func__); } void __irq DM9000ISR(void) { int i, packet_len; unsigned char status; char buffer[128]; rSRCPND = rSRCPND | (0x1<<4); rINTPND = rINTPND | (0x1<<4); // uart_printf("dm9000isr "); if(rEINTPEND&(1<<7)) { rEINTPEND = rEINTPEND | (0x1<<7); status = dm_reg_read(DM9000_ISR); //清中斷 dm_reg_write(DM9000_ISR, status); if(status & ISR_PRS ){ packet_len = dm_rec_packet(buffer); //接收網(wǎng)卡數(shù)據(jù) if((buffer[12]==0x08)&&(buffer[13]==0x06)){ //是ARP協(xié)議 for( i = 0; i< packet_len; i++) { uart_printf("0x%x ", buffer[i]); } } } else if(status & ISR_PTS) { dm_trans_done(); } } } 改成這樣之后,依然不能產(chǎn)生發(fā)送完畢的中斷。(可以成功的發(fā)包,我通過發(fā)包軟件抓到了發(fā)送的包,但就是不產(chǎn)生中斷) 2. 收包。 接收數(shù)據(jù)就略顯復(fù)雜,因?yàn)樗怯幸欢ǜ袷揭蟮摹T诮邮盏降囊话鼣?shù)據(jù)中的首字節(jié)如果為0x01,則表示這是一個(gè)可以接收的數(shù)據(jù)包;如果為0x0,則表示沒有可接收的數(shù)據(jù)包。因此在讀取其他字節(jié)時(shí),一定要先判斷首字節(jié)是否為0x01。數(shù)據(jù)包的第二個(gè)字節(jié)為數(shù)據(jù)包的一些信息,它的高字節(jié)的格式與DM9000的寄存器RSR完全一致。第三個(gè)和第四個(gè)字節(jié)為數(shù)據(jù)包的長(zhǎng)度。后面的數(shù)據(jù)就是真正要接收的數(shù)據(jù)了。下面就是DM9000接收數(shù)據(jù)的程序,其中輸入?yún)?shù)為存放輸入數(shù)據(jù)數(shù)組的首地址,輸出參數(shù)為接收數(shù)據(jù)的長(zhǎng)度。 int dm_rec_packet(unsigned char *datas) { unsigned char int_status; unsigned char rx_ready; unsigned short rx_status; unsigned short rx_length; unsigned short temp; int i; int_status = dm_reg_read(DM9000_ISR); //讀取ISR if(int_status & 0x1) //判斷是否有數(shù)據(jù)要接受 { rx_ready = dm_reg_read(DM9000_MRCMDX); //先讀取一個(gè)無效的數(shù)據(jù) rx_ready = (unsigned char)DM_DATA_PORT; //真正讀取到的數(shù)據(jù)包首字節(jié) if(rx_ready == 1) //判讀首字節(jié)是否為1或0 { DM_ADDR_PORT = DM9000_MRCMD; //連續(xù)讀取數(shù)據(jù)包內(nèi)容 rx_status = DM_DATA_PORT; //狀態(tài)字節(jié)
上一篇:ARM處理器架構(gòu)----處理器的工作狀態(tài)
下一篇:mini2440裸機(jī)編程--------LCD驅(qū)動(dòng)
推薦閱讀
史海拾趣
在穩(wěn)固了國(guó)內(nèi)市場(chǎng)地位之后,Danube開始將目光投向了全球市場(chǎng)。他們通過設(shè)立海外辦事處、與當(dāng)?shù)仄髽I(yè)合作等方式,積極開拓國(guó)際市場(chǎng)。Danube的產(chǎn)品憑借其卓越的品質(zhì)和創(chuàng)新的設(shè)計(jì),逐漸在國(guó)際市場(chǎng)上嶄露頭角。同時(shí),公司還根據(jù)不同國(guó)家和地區(qū)的市場(chǎng)需求,推出了定制化的產(chǎn)品和服務(wù),進(jìn)一步增強(qiáng)了其市場(chǎng)競(jìng)爭(zhēng)力。這些努力讓Danube在全球電子行業(yè)中逐漸嶄露頭角,成為了一家備受矚目的企業(yè)。
隨著全球?qū)Νh(huán)保問題的關(guān)注度不斷提高,Danube也積極響應(yīng)這一趨勢(shì),將綠色環(huán)保理念融入到產(chǎn)品設(shè)計(jì)和生產(chǎn)過程中。他們采用了環(huán)保材料和可循環(huán)使用的包裝材料,降低了產(chǎn)品對(duì)環(huán)境的影響。同時(shí),Danube還加大了對(duì)環(huán)保技術(shù)的研發(fā)投入,推出了一系列具有節(jié)能環(huán)保功能的電子產(chǎn)品。這些努力不僅提升了Danube的品牌形象,也為其未來的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
e2v Technologies自成立以來,一直致力于技術(shù)創(chuàng)新和科學(xué)合作。公司曾與多個(gè)國(guó)際知名科研機(jī)構(gòu)合作,參與了諸如哈勃天文望遠(yuǎn)鏡、Envisat氣象環(huán)境遙感衛(wèi)星等著名科學(xué)項(xiàng)目。這些項(xiàng)目對(duì)圖像傳感器的精度和穩(wěn)定性提出了極高的要求,e2v憑借其卓越的技術(shù)實(shí)力,成功為這些項(xiàng)目提供了高質(zhì)量的圖像傳感器,進(jìn)一步鞏固了其在圖像傳感器領(lǐng)域的領(lǐng)先地位。
隨著電子技術(shù)的快速發(fā)展,ELM意識(shí)到只有不斷創(chuàng)新才能保持市場(chǎng)競(jìng)爭(zhēng)力。因此,公司加大了研發(fā)投入,專注于新技術(shù)的研發(fā)和應(yīng)用。經(jīng)過數(shù)年的努力,ELM成功推出了一系列具有創(chuàng)新性和領(lǐng)先性的電子產(chǎn)品,如高性能的集成電路、先進(jìn)的傳感器等。這些產(chǎn)品的推出不僅豐富了ELM的產(chǎn)品線,也進(jìn)一步提升了公司的市場(chǎng)地位。
隨著產(chǎn)品的不斷成熟和市場(chǎng)的日益擴(kuò)大,Advanced Photonix開始尋求與全球分銷商的合作。在經(jīng)過一番謹(jǐn)慎的篩選和談判后,公司與全球知名的半導(dǎo)體和電子元器件授權(quán)分銷商貿(mào)澤電子簽訂了全球分銷協(xié)議。這一合作使得Advanced Photonix的產(chǎn)品能夠更快地進(jìn)入全球市場(chǎng),同時(shí)也提高了公司的知名度和影響力。通過貿(mào)澤電子的分銷網(wǎng)絡(luò),Advanced Photonix的光電二極管、混合器件以及光電管等產(chǎn)品得到了廣泛應(yīng)用,進(jìn)一步鞏固了公司在電子行業(yè)的領(lǐng)先地位。
在第二次世界大戰(zhàn)期間,Eagle-Picher公司利用其在材料科學(xué)方面的專長(zhǎng),為美國(guó)軍隊(duì)生產(chǎn)蓄電池。公司使用硅藻土和鋅等材料,為軍隊(duì)的通信設(shè)備和其他電子設(shè)備提供可靠的電源。這一時(shí)期的業(yè)務(wù)擴(kuò)張不僅增強(qiáng)了Eagle-Picher的技術(shù)實(shí)力,也為其在電子行業(yè)樹立了良好的聲譽(yù)。
BOOL FMD_ReadSector( SECTOR_ADDR startSectorAddr, LPBYTE pSectorBuff, PSectorInfo pSectorInfoBuff, DWORD dwNumSectors ) { DWORD & ...… 查看全部問答∨ |
|
求書籍資料!!!(關(guān)于51系列單片機(jī)與TMS9914接口技術(shù)) 小弟看了幾天GPIB通信(488.2),9914模式的E文,自己用89C52和TMS9914芯片(還有譯碼的SN75160,SN75161)做了塊板,通過GPIB卡連到電腦,但是連地址都找不到。。。。。。無奈,現(xiàn)在求助各位大俠,介紹一些關(guān)于單片機(jī)與GPIB接口的書籍,特別是使用T ...… 查看全部問答∨ |
這是彩信通知的短信PDU: 0891683108200315F0640891015618450004802151902533238C0605040B8423F0A3 06246170706C69636174696F6E2F766E642E7761702E6D6D732D6D65737361676500 B487AF848C8298504A31675A684A4D4C6C4F42008D9083687474703A2F2F323138 ...… 查看全部問答∨ |
PPC3模擬器上無法顯示地圖(利用mapx mobile控件) 我的機(jī)子上已經(jīng)安裝了:EVC+PPC2003 SDK+MapX Mobile 按照MapX Mobile的幫助文檔,在模擬器上也安裝了MapX Mobile(即運(yùn)行了C:\\Program Files\\MapInfo\\MapX Mobile-5.05\\target\\x86\\TargetIn ...… 查看全部問答∨ |
求助:國(guó)外MP4,英文WINCE O/S,我是菜鳥,請(qǐng)教怎樣才能正確顯示中文? 近日收到國(guó)外寄來MP4,ARM9+TI DM320,觸摸屏,英文WINCE 5.0 O/S,30G硬盤,電影,音樂,圖片,OFFICE,收音機(jī),錄像,錄音,功能也還全。但不能顯示中文。 我看機(jī)器里面三個(gè)文件OSImage.img,ndloader.exe and NK.bin。也看了網(wǎng)上的文章,應(yīng)該是關(guān) ...… 查看全部問答∨ |
自制一個(gè)USB燈吧!讓微藍(lán)的燈光照在鍵盤上,不影響顯示器的顯示,也不打擾家人休息。其他好玩的USB產(chǎn)品:USB臺(tái)燈、USB充電器、USB風(fēng)扇等。 USB產(chǎn)品原理:利用USB接口的充電功能。只要所負(fù)載的東東不超過500mA的電流,就能實(shí)現(xiàn)。所需設(shè)備: US ...… 查看全部問答∨ |
請(qǐng)教版主:我用STM32F103系列的單片機(jī)做CAN通信使用網(wǎng)上的例程,在LLOKBACK模式下,完全正常當(dāng)我把兩個(gè)板子燒錄上程序,一個(gè)是發(fā)送,一個(gè)是接收(中斷接收)兩塊板子分為A板B板,A板是用的默認(rèn)口PA11 PA12 B板用的是PB8 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 嵌入式學(xué)習(xí)篇丨迅為4412開發(fā)板Android4.4系統(tǒng)編譯
- Linux系統(tǒng)編程篇丨迅為IMX6ULL-對(duì)應(yīng)視頻講解
- 嵌入式學(xué)習(xí)丨4412開發(fā)板-uboot源碼-匯編-源碼分析(一)嵌入式學(xué)習(xí)丨4412開發(fā)板-uboot源碼-匯
- 迅為IMX6ULL開發(fā)板-主頻和時(shí)鐘配置例程(二)
- 迅為IMX6ULL開發(fā)板-主頻和時(shí)鐘配置例程
- 迅為IMX6ULL開發(fā)板安裝VMware Tool工具
- i.MX6ULL終結(jié)者Debian文件系統(tǒng)的構(gòu)建i.MX6ULL 移植Debian文件系統(tǒng)
- 迅為i.MX6ULL開發(fā)板按鍵例程編譯及運(yùn)行
- 迅為-i.MX6開發(fā)板手冊(cè)更新-非設(shè)備樹uboot-修改默認(rèn)環(huán)境變量
- 迅為-IMX6ULL-QT應(yīng)用_在開發(fā)板上移植ssh
- 迅為-i.MX6ULL開發(fā)板-QT實(shí)戰(zhàn)項(xiàng)目DHT11&網(wǎng)絡(luò)編程實(shí)戰(zhàn)練習(xí)(一)
- 迅為-i.MX6ULL開發(fā)板-網(wǎng)絡(luò)測(cè)試方法(二)
- 迅為-IMX6開發(fā)板設(shè)備樹-Linux內(nèi)核配置兩路can
- 4412開發(fā)板一鍵燒寫QT程序到開發(fā)板-安裝ssh
- 迅為iTOP-i.MX6ULL開發(fā)板-網(wǎng)絡(luò)通信-套字節(jié)UDP
- 迅為iTOP-i.MX6ULL開發(fā)板-網(wǎng)絡(luò)通信-套字節(jié)TCP
- ROHM推出支持負(fù)電壓和高電壓(40V/80V)的高精度電流檢測(cè)放大器
- 迅為IMX6開發(fā)板非設(shè)備樹源碼編譯環(huán)境搭建(一)
- 迅為i.MX6ULL開發(fā)板Platform設(shè)備驅(qū)動(dòng)運(yùn)行測(cè)試
- 嵌入式Rust修煉營(yíng):動(dòng)手寫串口燒錄工具和MCU例程,Rust達(dá)人Hunter直播帶你入門Rust
- 有獎(jiǎng)技術(shù)直播:Keysight量子計(jì)算測(cè)量方案線上研討會(huì)
- 好書共讀 | 《控制之美(卷2)——最優(yōu)化控制MPC與卡爾曼濾波器》
- TI 中國(guó)大學(xué)計(jì)劃20周年狂歡盛宴
- EEWorld 2018年度最具影響力網(wǎng)友評(píng)選
- ADI有獎(jiǎng)下載活動(dòng)之12 ADI基于視覺的占用檢測(cè)解決方案
- 為“ADI實(shí)驗(yàn)室電路”尋建議!
- 【搶樓贏禮】聊聊“我眼中的ADI實(shí)驗(yàn)室電路”
- 中國(guó)版BeagleBone Black 春節(jié)不打烊,火爆開團(tuán)!
- 觀看TI無線連接專場(chǎng)研討會(huì) 下載TI無線電子書有禮
- 2018年內(nèi)存芯片收入有望實(shí)現(xiàn)創(chuàng)紀(jì)錄增長(zhǎng)
- SEMI:中國(guó)已成為全球最大半導(dǎo)體后道工序市場(chǎng)
- 全球首個(gè)無人船公司建立 三位一體的“無人時(shí)代”可能快要到來
- 新能源汽車:興于政策 敗于充電
- 2018年手機(jī)指紋市場(chǎng)調(diào)研報(bào)告:屏下指紋是誰的未來?
- RTEMS在S3C2440上的移植-(2)
- RTEMS在S3C2440上的移植-(5)
- 先行先試 加快推動(dòng)泛在電力物聯(lián)網(wǎng)在廈門落地
- 以更高站位加快推進(jìn)泛在電力物聯(lián)網(wǎng)建設(shè)
- 以改革創(chuàng)新精神推動(dòng)“三型兩網(wǎng)、世界一流”企業(yè)建設(shè)
- 給需要各學(xué)科視頻教程的壇友推薦一個(gè)視頻教學(xué)資料網(wǎng)站
- 看arm匯編遇到的幾個(gè)問題,請(qǐng)各位達(dá)人講解,謝謝!
- 強(qiáng)占發(fā)帖位,ESP32---WS2812 16*16點(diǎn)陣 畫點(diǎn)線面
- 09.22【每周討論】這么便宜啊,真有這樣的活動(dòng)嗎?
- ASM1117的SOT-323服裝的散熱腳問題?
- AVR TFT驅(qū)動(dòng)顯示問題
- 《VLMC激光雕刻機(jī)》三,VLMC激光雕刻機(jī)分解---3.1,機(jī)械部分
- 有的筆記本按下顯示切換熱鍵能切換到LCD+CRT extended模式,是怎樣實(shí)現(xiàn)的??
- 關(guān)于28335中I2C的FIFO的問題
- 鋰電池快充技術(shù)對(duì)電池材料與組成結(jié)構(gòu)的要求