日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

串口DMA方式收發(fā)

筆者使用的是STM32F407VET6,共包含6路串口,頁尾處程序已將全部串口的DMA收發(fā)配置完成,本文僅以串口1為例進(jìn)行講解。(查看代碼可直接跳至第二節(jié)或頁尾處下載)


1 STM32F4 DMA  簡介

DMA,全稱為:Direct Memory Access,即直接存儲器訪問。DMA 傳輸方式無需 CPU 直接控制傳輸,也沒有中斷處理方式那樣保留現(xiàn)場和恢復(fù)現(xiàn)場的過程,通過硬件為 RAM 與 I/O 設(shè)備開辟一條直接傳送數(shù)據(jù)的通路,能使 CPU 的效率大為提高。


STM32F4 最多有 2 個 DMA 控制器(DMA1 和 DMA2),共 16 個數(shù)據(jù)流(每個控制器 8 個),每一個 DMA 控制器都用于管理一個或多個外設(shè)的存儲器訪問請求。每個數(shù)據(jù)流總共可以有多達(dá) 8個通道(或稱請求)。每個數(shù)據(jù)流通道都有一個仲裁器,用于處理 DMA 請求間的優(yōu)先級。


它可以處理一下事務(wù):


外設(shè)到儲存器的傳輸

儲存器到外設(shè)的傳輸

儲存器到儲存器的傳輸

注意:DMA1 控制器 AHB 外設(shè)端口與 DMA2 控制器的情況不同,不連接到總線矩陣,因此,僅 DMA2 數(shù)據(jù)流能夠執(zhí)行存儲器到

存儲器的傳輸。


其中,數(shù)據(jù)流的多通道選擇,是通過 DMA_SxCR 寄存器控制的,如圖1所示:

圖1 通道選擇


上圖可以看出,DMA_SxCR 控制數(shù)據(jù)流到底使用哪一個通道,每個數(shù)據(jù)流有 8 個通道可供選擇,但每次只能選擇其中一個通道進(jìn)行 DMA 傳輸,DMA2 的各數(shù)據(jù)流通道映射表,如表 1 所示


表1 DMA2數(shù)據(jù)流映射表

上表就列出了 DMA2 所有可能的選擇情況,來總共 64 種組合,比如本章我們要實現(xiàn)串口1的 DMA 發(fā)送,即USART1_TX,就必須選擇 DMA2 的數(shù)據(jù)流 7,通道 4,來進(jìn)行 DMA 傳輸。這里注意一下,有的外設(shè)(比如 USART1_RX)可能有多個通道可以選擇,隨意選擇一個就可以。


重要寄存器簡介

(1) DMA 中斷狀態(tài)寄存器


該寄存器總共有 2 個:DMA_LISR 和 DMA_HISR,每個寄存器管理 4 數(shù)據(jù)流(總共 8 個),DMA_LISR 寄存器用于管理數(shù)據(jù)流 0~3,而 DMA_HISR 用于管理數(shù)據(jù)流 4~7。如果開啟了 DMA_LISR 中這些位對應(yīng)的中斷,則在達(dá)到條件后就會跳到中斷服務(wù)函數(shù)里面去,即使沒開啟,也可以通過查詢這些位來獲得當(dāng)前 DMA 傳輸?shù)臓顟B(tài)。這里常用的是 TCIFx位,即數(shù)據(jù)流 x 的 DMA 傳輸完成與否標(biāo)志。


注意:此寄存器為只讀寄存器,所以在這些位被置位之后,只能通過【中斷標(biāo)志清除寄存器】來清除。


(2)DMA 中斷標(biāo)志清除寄存器


該寄存器同樣有 2 個:DMA_LIFCR 和 DMA_HIFCR,同樣是每個寄存器控制 4 個數(shù)據(jù)流。該寄存器為只寫寄存器,其各位就是用來清除 【中斷狀態(tài)寄存器】的對應(yīng)位的,通過寫 1 清除。


(3) DMA 數(shù)據(jù)流 x 配置寄存器(DMA_SxCR)


該寄存器控制著 DMA 的很多相關(guān)信息,包括數(shù)據(jù)寬度、外設(shè)及存儲器的寬度、優(yōu)先級、增量模式、傳輸方向、中斷允許、使能等都是通過該寄存器來設(shè)置的。所以 DMA_ SxCR 是 DMA 傳輸?shù)暮诵目刂萍拇嫫鳌?p>

(4)DMA 數(shù)據(jù)流 x 數(shù)據(jù)項數(shù)寄存器(DMA_SxNDTR)


這個寄存器控制 DMA 數(shù)據(jù)流 x 的每次傳輸所要傳輸?shù)臄?shù)據(jù)量。其設(shè)置范圍為 0~65535。并且該寄存器的值會隨著傳輸?shù)倪M(jìn)行而減少,當(dāng)該寄存器的值為 0 的時候就代表此次數(shù)據(jù)傳輸已經(jīng)全部發(fā)送完成了。所以可以通過這個寄存器的值來知道當(dāng)前DMA 傳輸?shù)倪M(jìn)度。


注意:這里是數(shù)據(jù)項數(shù)目,而不是指的字節(jié)數(shù)。比如設(shè)置數(shù)據(jù)位寬為 16 位,那么傳輸一次(一個項)就是 2 個字節(jié)


(5)DMA 數(shù)據(jù)流 x 的外設(shè)地址寄存器(DMA_SxPAR)


該寄存器用來存儲 STM32F4 外設(shè)的地址,比如使用串口 1,那么該寄存器必須寫入 0x40011004(其實就是&USART1_DR)。


(6) DMA 數(shù)據(jù)流 x 的存儲器地址寄存器


由于 STM32F4 的 DMA 支持雙緩存,所以存儲器地址寄存器有兩個:DMA_SxM0AR 和 DMA_SxM1AR,其中 DMA_SxM1AR 僅在雙緩沖模式下,才有效。比如使用 USART1_TX_BUF[USART_LEN] 數(shù)組來做存儲器,那么在DMA_SxM0AR 中寫入 &USART1_TX_BUF 就可以了。


2 收發(fā)配置

2.1串口配置(使能DMA收發(fā))

重點:使能串口1的接收、發(fā)送和串口1的DMA接收、發(fā)送并使能串口1的空閑中斷


/*------------------------------------------------

* 函數(shù)名:void Init_USART1(u32 pclk2,u32 bound)

* 功  能:初始化IO 串口1

* 參  數(shù):pclk2: PCLK2時鐘頻率(Mhz)

      bound: 波特率 

* 返回值: 無

------------------------------------------------*/

void Init_USART1(u32 pclk2,u32 bound)

{   

float temp;

u16 mantissa;

u16 fraction;    

temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV@OVER8=0

mantissa=temp; //得到整數(shù)部分

fraction=(temp-mantissa)*16; //得到小數(shù)部分@OVER8=0 

        mantissa<<=4;

mantissa+=fraction; 

RCC->AHB1ENR|=1<<0;    //使能PORTA口時鐘  

RCC->APB2ENR|=1<<4;  //使能串口1時鐘 

GPIO_Set(GPIOA,PIN9|PIN10,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_PU);//PA9,PA10,復(fù)用功能,上拉輸出

  GPIO_AF_Set(GPIOA,9,7); //PA9,AF7

GPIO_AF_Set(GPIOA,10,7);//PA10,AF7     

//波特率設(shè)置

  USART1->BRR=mantissa; //波特率設(shè)置  

USART1->CR1&=~(1<<15); //設(shè)置OVER8=0 

USART1->CR1|=1<<3;  //串口發(fā)送使能 

USART1->CR3|=1<<7;      //使能串口1的DMA發(fā)送

#if EN_USART1_RX   //如果使能了接收

USART1->CR1|=1<<2;  //串口接收使能

USART1->CR3|=1<<6;      //使能串口1的DMA接收  

USART1->CR1|=1<<4;    //使能空閑中斷    

MY_NVIC_Init(3,3,USART1_IRQn,2);//組2,最低優(yōu)先級 

#endif

USART1->CR1|=1<<13;  //串口使能

}


2.2兩個變量

發(fā)送和接收的數(shù)據(jù)都將以如下兩個變量為指定儲存器。


#define USART_LEN  50  //定義最大接收字節(jié)數(shù) 50

u8 USART1_TX_BUF[USART_LEN];

u8 USART1_RX_BUF[USART_LEN];


2.3 DMA配置

(1)使能DMA2時鐘,并等待數(shù)據(jù)流可配置 。


(2)設(shè)置外設(shè)地址


(3)設(shè)置儲存器地址


(4)設(shè)置傳輸數(shù)據(jù)量


(5)設(shè)置數(shù)據(jù)流7的配置信息


(6)開啟數(shù)據(jù)流7的傳輸完成中斷


/*------------------------------------------------

* 函數(shù)名:void MYDMA_Config(DMA_Stream_TypeDef *DMA_Streamx,u8 chx,u32 par,u32 mar,u16 ndtr,u8 dir)

* 功  能:配置DMA

* 參  數(shù):DMA_Streamx: DMA數(shù)據(jù)流(DMA1_Stream0~7/DMA2_Stream0~7)

     chx: DMA通道選擇(范圍:0~7)

     par: 外設(shè)地址

mar: 存儲器地址

ndtr: 數(shù)據(jù)傳輸量

dir: 數(shù)據(jù)傳輸方向(DMA_DIR_PeripheralToMemory / DMA_DIR_MemoryToPeripheral / DMA_DIR_MemoryToMemory)

* 返回值: 無

------------------------------------------------*/

void MYDMA_Config(DMA_Stream_TypeDef *DMA_Streamx,u8 chx,u32 par,u32 mar,u16 ndtr,u8 dir)

DMA_TypeDef *DMAx;

u8 streamx;

if((u32)DMA_Streamx>(u32)DMA2)//得到當(dāng)前stream是屬于DMA2還是DMA1

{

DMAx=DMA2;

RCC->AHB1ENR|=1<<22;//DMA2時鐘使能 

}else 

{

DMAx=DMA1; 

  RCC->AHB1ENR|=1<<21;//DMA1時鐘使能 

}

while(DMA_Streamx->CR&0X01);//等待DMA可配置 

streamx=(((u32)DMA_Streamx-(u32)DMAx)-0X10)/0X18; //得到stream通道號

  if(streamx>=6)DMAx->HIFCR|=0X3D<<(6*(streamx-6)+16); //清空之前該stream上的所有中斷標(biāo)志

else if(streamx>=4)DMAx->HIFCR|=0X3D<<6*(streamx-4);    //清空之前該stream上的所有中斷標(biāo)志

else if(streamx>=2)DMAx->LIFCR|=0X3D<<(6*(streamx-2)+16);//清空之前該stream上的所有中斷標(biāo)志

else DMAx->LIFCR|=0X3D<<6*streamx; //清空之前該stream上的所有中斷標(biāo)志

DMA_Streamx->PAR=par; //DMA外設(shè)地址

DMA_Streamx->M0AR=mar; //DMA存儲器0地址

DMA_Streamx->NDTR=ndtr; //n個數(shù)據(jù)項

DMA_Streamx->CR=0; //先全部復(fù)位CR寄存器值 

 

switch(dir)

{

case DMA_DIR_PeripheralToMemory: //外設(shè)到存儲器模式

DMA_Streamx->CR&=~(1<<6);

DMA_Streamx->CR&=~(1<<7);

break;

case DMA_DIR_MemoryToPeripheral: 

DMA_Streamx->CR|=1<<6;

DMA_Streamx->CR&=~(1<<7);

break;

case DMA_DIR_MemoryToMemory: 

DMA_Streamx->CR&=~(1<<6);

DMA_Streamx->CR|=1<<7;

break;

default:break;

}

DMA_Streamx->CR|=0<<8; //非循環(huán)模式(即使用普通模式)

DMA_Streamx->CR|=0<<9; //外設(shè)非增量模式

DMA_Streamx->CR|=1<<10; //存儲器增量模式

DMA_Streamx->CR|=0<<11; //外設(shè)數(shù)據(jù)長度:8位

DMA_Streamx->CR|=0<<13; //存儲器數(shù)據(jù)長度:8位

DMA_Streamx->CR|=1<<16; //中等優(yōu)先級

DMA_Streamx->CR|=0<<21; //外設(shè)突發(fā)單次傳輸

DMA_Streamx->CR|=0<<23; //存儲器突發(fā)單次傳輸

DMA_Streamx->CR|=(u32)chx<<25;//通道選擇

//DMA_Streamx->FCR=0X21; //FIFO控制寄存器

 

        DMA2_Stream7->CR|=1<<4; //使能傳輸完成中斷

        MY_NVIC_Init(2,1,DMA2_Stream7_IRQn,2);

}


2.4 設(shè)置MDA狀態(tài)標(biāo)志

注意:如果連續(xù)運行兩個發(fā)送函數(shù),如下,則可能在第一個還未發(fā)送完成時就會直接執(zhí)行第二次發(fā)送。


myDMAprintf(USART1,"usart = %dtch = %frn",1,1.567);

myDMAprintf(USART1,"usart = %dtch = %frn",1,1.567);

其運行效果如圖1所示,第一次僅發(fā)送了"us"即被第二次發(fā)送覆蓋了。

運行效果

圖1 運行效果


故需設(shè)置相應(yīng)的標(biāo)志位,對每次發(fā)送的狀態(tài)進(jìn)行標(biāo)記,若正在進(jìn)行傳輸,則等待,實現(xiàn)如下:


typedef enum 

{

BUSY,

IDLE

}DMA_Flag;

 

volatile DMA_Flag DMA2_Stream7_Flag = IDLE; //USART1

2.5 DMA中斷函數(shù)

        每次傳輸完成(串口發(fā)送完成)后,都會觸發(fā)一次中斷,此時只需在中斷函數(shù)中清除相應(yīng)標(biāo)志位并對發(fā)送狀態(tài)進(jìn)行標(biāo)記即可。


//對應(yīng)USART1發(fā)送

void DMA2_Stream7_IRQHandler(void)

{

if((DMA2->HISR&(1<<27)))

{

DMA2->HIFCR|=1<<27;

                DMA2_Stream7_Flag = IDLE;

}

}

2.6 DMA初始化

        查詢手冊可知,串口1發(fā)送為DMA2的數(shù)據(jù)流7,通道4,并為內(nèi)存到外設(shè)模式,而串口1接收為DMA2的數(shù)據(jù)流5,通道4,并為外設(shè)到內(nèi)存模式。


注意:此處需提前開啟一次DMA接收,否則第一次接收會產(chǎn)生錯誤數(shù)據(jù)。


//USART1發(fā)送 --- DMA2,數(shù)據(jù)流7,CH4---USART1_TXD 外設(shè)為串口1,存儲器為USART1_TX_BUF,長度為:USART_LEN

MYDMA_Config(DMA2_Stream7,4,(u32)&USART1->DR,(u32)USART1_TX_BUF,USART_LEN,DMA_DIR_MemoryToPeripheral);

//USART1接收 --- DMA2,數(shù)據(jù)流5,CH4---USART1_RXD 外設(shè)為串口1,存儲器為USART1_RX_BUF,長度為:USART_LEN

MYDMA_Config(DMA2_Stream5,4,(u32)&USART1->DR,(u32)USART1_RX_BUF,USART_LEN,DMA_DIR_PeripheralToMemory);

MYDMA_Enable(DMA2_Stream5,(u32)USART1_RX_BUF,USART_LEN);//開始一次DMA傳輸!

2.6 開啟一次串口DMA傳輸

配置DMA數(shù)據(jù)流、內(nèi)存地址及傳輸量。


void MYDMA_Enable(DMA_Stream_TypeDef *DMA_Streamx, u32 mar, u16 ndtr)

{

DMA_Streamx->CR&=~(1<<0); //關(guān)閉DMA傳輸 

while(DMA_Streamx->CR&0X1); //確保DMA可以被設(shè)置  

DMA_Streamx->M0AR=mar; //DMA存儲器地址

DMA_Streamx->NDTR=ndtr; //DMA傳輸數(shù)據(jù)量 

DMA_Streamx->CR|=1<<0; //開啟DMA傳輸

}

2.7 格式化發(fā)送

該部分已封裝為類似printf()的發(fā)送函數(shù),大致為3個部分:


(1)格式化數(shù)據(jù)為字符串;


(2)判斷發(fā)送狀態(tài),若“忙”,則等待。


(3)設(shè)置好儲存器地址,使能發(fā)送并設(shè)置發(fā)送狀態(tài);


/*------------------------------------------------

* 函數(shù)名:Status myDMAprintf(USART_TypeDef *USARTx, const char *format, ...)

* 功  能:仿 printf 函數(shù) 

* 參  數(shù):*USARTx: 串口號

      *pString: 打印內(nèi)容

      ... : 變量

* 返回值: 狀態(tài)

------------------------------------------------*/

Status myDMAprintf(USART_TypeDef *USARTx, const char *format, ...)

{

va_list args;

u16 len;

if(format == NULL)

return 1;

va_start(args, format);

if(USARTx == USART1)

{

len = vsnprintf((char *)USART1_TX_BUF, USART_LEN, format, args);

while(DMA2_Stream7_Flag != IDLE);

MYDMA_Enable(DMA2_Stream7,(u32)USART1_TX_BUF,len);

DMA2_Stream7_Flag = BUSY;

}

else if(USARTx == USART2)

{

len = vsnprintf((char *)USART2_TX_BUF, USART_LEN, format, args);

while(DMA1_Stream6_Flag != IDLE);

MYDMA_Enable(DMA1_Stream6,(u32)USART2_TX_BUF,len);

DMA1_Stream6_Flag = BUSY;

}

else if(USARTx == USART3)

{

len = vsnprintf((char *)USART3_TX_BUF, USART_LEN, format, args);

while(DMA1_Stream3_Flag != IDLE);

MYDMA_Enable(DMA1_Stream3,(u32)USART3_TX_BUF,len);

DMA1_Stream3_Flag = BUSY;

}

else if(USARTx == UART4)

{

len = vsnprintf((char *)UART4_TX_BUF, USART_LEN, format, args);

while(DMA1_Stream4_Flag != IDLE);

MYDMA_Enable(DMA1_Stream4,(u32)UART4_TX_BUF,len);

DMA1_Stream4_Flag = BUSY;

}

else if(USARTx == UART5)

{

len = vsnprintf((char *)UART5_TX_BUF, USART_LEN, format, args);

while(DMA1_Stream7_Flag != IDLE);

MYDMA_Enable(DMA1_Stream7,(u32)UART5_TX_BUF,len);

DMA1_Stream7_Flag = BUSY;

}

else if(USARTx == USART6)

{

len = vsnprintf((char *)USART6_TX_BUF, USART_LEN, format, args);

while(DMA2_Stream6_Flag != IDLE);

MYDMA_Enable(DMA2_Stream6,(u32)USART6_TX_BUF,len);

DMA2_Stream6_Flag = BUSY;

}

else

return 2;

va_end(args);

return 0;

}

2.8串口DMA接收

        當(dāng)串口進(jìn)入空閑狀態(tài)時即開啟一次DMA接收,下次數(shù)據(jù)到來時DMA會自動搬運數(shù)據(jù)至指定的儲存器(此處為USART1_TX_BUF),搬運完成后會再次觸發(fā)空閑中斷,此時清除空閑中斷標(biāo)志位、DMA傳輸完成標(biāo)志位和傳輸錯誤標(biāo)志位,并清除接收內(nèi)存,開啟下一次接收。


void USART1_IRQHandler(void)

{

u8 temp;

u16 len;

if(USART1->SR&(1<<4))//檢測到線路空閑

{

//軟件序列清除IDLE標(biāo)志位

temp = USART1->SR;

temp = USART1->DR;

DMA2_Stream5->CR &=~(1<<0); //關(guān)閉DMA傳輸,準(zhǔn)備重新配置

DMA2->HIFCR|=1<<11; //清除DMA2_Steam5傳輸完成標(biāo)志

DMA2->HIFCR|=1<<9; //清除DMA2_Steam5傳輸錯誤標(biāo)志

len = USART_LEN - (uint16_t)(DMA2_Stream5->NDTR);

myDMAprintf(USART1,"len = %d,data: %s",len,USART1_RX_BUF);

[1] [2]
關(guān)鍵字:串口  DMA方式  發(fā)送&接收 引用地址:串口DMA方式發(fā)送&接收

上一篇:通過DMA向串口發(fā)送數(shù)據(jù)
下一篇:STM32F10x 學(xué)習(xí)筆記之USART實現(xiàn)串口通訊 DMA 方式

推薦閱讀

  還記得上首個獲得公民身份的人工智能機器人Sophia么?驚人的口才和語言自主學(xué)習(xí)能力讓全世界所折服,儼然成為人工智能領(lǐng)域中的網(wǎng)紅。   當(dāng)然,伴隨著Sophia的走紅,自然語言處理這一人工智能領(lǐng)域中的分支課題也逐漸走進(jìn)人們的視野,成為近年來人工智能領(lǐng)域中最火熱的研究課題。自然語言處理簡稱“NLP”, 它是以實現(xiàn)人與之間用自然語言進(jìn)行有效...
日前,汽車零部件制造商德國大陸集團(tuán)對外展示了最新款48V大功率驅(qū)動系統(tǒng),功率達(dá)到30kW。新款系統(tǒng)由一款電機、集成功率電子件及電池組成,旨在減少能耗。大陸工程師目前成功研發(fā)了一款48V混動系統(tǒng),該款系統(tǒng)的功能與高電壓電驅(qū)動(48V大功率)技術(shù)類似。相較于配置在內(nèi)燃發(fā)動機上的類似系統(tǒng),新款系統(tǒng)可將二氧化碳排放量降低近兩成。同時,新款48V技術(shù)比當(dāng)...
這篇起博主要開始講51系列單片機的匯編指令了,我們需要環(huán)境Keil,版本無所謂,都差不多,至于keil怎么建工程不用博主說吧,這個大家可以自行百度1.匯編指令1.1指令格式[標(biāo)號:] 操作碼 [操作數(shù)1], [操作數(shù)2], [操作數(shù)3]; 注釋整個語句必須在一行內(nèi)寫完(1)標(biāo)號:指令的地址符(2)操作碼:表示指令的操作功能(2)操作數(shù):參加操作的數(shù)據(jù)或數(shù)據(jù)地址...
據(jù)Sisvel官網(wǎng)消息,小米和Sisvel日前宣布,兩家公司已簽署許可協(xié)議,涵蓋三菱電機和Sisvel在移動通信領(lǐng)域的標(biāo)準(zhǔn)必要專利。這意味著兩家公司將結(jié)束長達(dá)兩年的專利訴訟糾紛。自2019年以來,兩家公司的糾紛已訴至跨中國、德國、意大利、荷蘭和英國法院。據(jù)悉,Sisvel和三菱電機授權(quán)給小米的蜂窩專利組合包括針對蜂窩標(biāo)準(zhǔn)的120多個專利系列(包括 1800 多項...

史海拾趣

問答坊 | AI 解惑

畢業(yè)設(shè)計的簡易智能小車

本帖最后由 paulhyde 于 2014-9-15 09:32 編輯 希望對大家的電子設(shè)計競賽有所幫助  …

查看全部問答∨

Proteus軟件資料及視頻教程匯總

視頻教程: Proteus_教程2—修改元件.pdf Proteus_與單片機實時動態(tài)仿真.pdf Proteus_自學(xué)教程上.pdf Proteus_自學(xué)教程下.pdf 第二章_電路原理圖設(shè)計.pdf 第三章_電路仿真實驗.pdf 第四章_印刷電路板設(shè)計.pdf [ 本帖最后由 yuandayuan6999 ...…

查看全部問答∨

EP2C8Q208 可以做燒Delta-sigma ADC嗎

以前大學(xué)時接觸過Altera的DE2開發(fā)板,但隔了2年沒接觸了顯得很生疏,對器件不是很了解?,F(xiàn)在想買一塊開發(fā)板,看到一款以EP2C8Q208為核心的,但不知道它里面的資源是否能滿足一個delta-sigma ADC的要求?我是想把代碼燒進(jìn)去,利用Matlab生成mif寫到l ...…

查看全部問答∨

【STM32F103xCDE先睹為快】

                                 ST今天在中國北京領(lǐng)先全球發(fā)布STM32新產(chǎn)品,以下是數(shù)據(jù)手冊的第一頁,讓廣大網(wǎng)友先睹為快,數(shù)據(jù)手冊不日發(fā)布?!?

查看全部問答∨

【低功耗】Xilinx的FPGA低功耗相關(guān)文章下載(七)

這是我的一些Xilinx的FPGA的論文,傳上來給大家分享一下!大家多多支持?。? 我會分批上傳,方便大家選擇性的交流與下載!…

查看全部問答∨

筆記本串口調(diào)試,跪求

筆記本沒有串口,我想與開發(fā)板進(jìn)行串口調(diào)試的時候,想用串口調(diào)試助手顯示,應(yīng)該怎么配置呢? 跪求 謝謝各位大神了…

查看全部問答∨

用keil編譯提示內(nèi)存不夠,怎么解決

事牘?C(140): error C249: \'DATA\': SEGMENT TOO LARGE 用keil編譯200句程序時,提示這個,我是新手,不知道該怎么辦?…

查看全部問答∨

常用ARM指令集及匯編

replyreload += \',\' + 1414834;Timson,如果您要查看本帖隱藏內(nèi)容請回復(fù)…

查看全部問答∨

有人用過X9221么

自動增益控制電路,用的是x9221數(shù)字電位器,和msp430x155單片機,網(wǎng)上關(guān)于x9221的參考例程不是特別多,希望能有人指點,已經(jīng)做了很長時間了沒有出來,無法寫入WCR,謝謝…

查看全部問答∨

【程序調(diào)試黑寶書】

從其它地方下載過來的,覺得不錯跟大家分享一下! …

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved