www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]#i nclude#i nclude#i nclude "UART.h"/* USART Buffer Defines */#define USART_RX_BUFFER_SIZE 16 /* 1,2,4,8,16,32,64,128 or 256bytes */#define USART_RX_BUFFER_MASK

#i nclude

#i nclude

#i nclude "UART.h"

/* USART Buffer Defines */

#define USART_RX_BUFFER_SIZE 16 /* 1,2,4,8,16,32,64,128 or 256

bytes */

#define USART_RX_BUFFER_MASK ( USART_RX_BUFFER_SIZE - 1 )

#define USART_TX_BUFFER_SIZE 16 /* 1,2,4,8,16,32,64,128 or 256

bytes */

#define USART_TX_BUFFER_MASK ( USART_TX_BUFFER_SIZE - 1 )

#if ( USART_RX_BUFFER_SIZE & USART_RX_BUFFER_MASK )

#error RX buffer size is not a power of 2

#endif

/* StatIC Variables */

static unsigned char USART_RxBuf[USART_RX_BUFFER_SIZE];

static volatile unsigned char USART_RxHead;

static volatile unsigned char USART_RxTail;

static unsigned char USART_TxBuf[USART_TX_BUFFER_SIZE];

static volatile unsigned char USART_TxHead;

static volatile unsigned char USART_TxTail;

/* 串口初始化 */

void InitUSART(INT8U baudrate)

{

INT8U x;

UBRR0L = baudrate;

UCSR0B = ( (1

Interrupt Enable, Receiver Enable and Transmitter Enable*/

x = 0; /* flush receive buffer */

USART_RxTail = x;

USART_RxHead = x;

USART_TxTail = x;

USART_TxHead = x;

}

/* 接收中斷 */

void USART_RX_interrupt( void )

{

unsigned char data;

unsigned char tmphead;

data = UDR0; /* read the received data */

tmphead = ( USART_RxHead + 1 ) & USART_RX_BUFFER_MASK;/*

calculate

buffer index */

USART_RxHead = tmphead; /* store new index */

if ( tmphead == USART_RxTail )

{

return;/* ERROR! Receive buffer overflow, you CAN use

flux cortorl */

}

USART_RxBuf[tmphead] = data; /* store received data in buffer

*/

}

/* 發(fā)送中斷 */

void USART_TX_interrupt( void )

{

unsigned char tmptail;

if ( USART_TxHead != USART_TxTail )/* check if all data is

transmitted */

{

tmptail = ( USART_TxTail + 1 ) & USART_TX_BUFFER_MASK;/*

calculate buffer index */

USART_TxTail = tmptail; /* store new index */

UDR0 = USART_TxBuf[tmptail]; /* start transmition */

}

else

{

UCSR0B &= ~(1

}

}

/* 讀取數(shù)據(jù)函數(shù) */

unsigned char ReceiveByte( void )

{

unsigned char tmptail;

while ( USART_RxHead == USART_RxTail ) /* wait for incomming

data */

;

tmptail = ( USART_RxTail + 1 ) & USART_RX_BUFFER_MASK;/*

calculate

buffer index */

USART_RxTail = tmptail; /* store new index */

return USART_RxBuf[tmptail]; /* return data */

}

/* 發(fā)送數(shù)據(jù)函數(shù) */

void TransmitByte( unsigned char data )

{

unsigned char tmphead;

tmphead = ( USART_TxHead + 1 ) & USART_TX_BUFFER_MASK; /*

calculate

buffer index */

while ( tmphead == USART_TxTail )/* wait for free sPACe in

buffer */

;

USART_TxBuf[tmphead] = data; /* store data in buffer */

USART_TxHead = tmphead; /* store new index */

UCSR0B |= (1<}

/* 查詢是否有數(shù)據(jù) */

unsigned char DataInReceiveBuffer( void )

{

return ( USART_RxHead != USART_RxTail ); /* return 0 (FALSE)

if the

receive buffer is empty */

}

/* 中斷中只做很少的事情,通常我是在接收中斷中post一個(gè)信號(hào)量,觸發(fā)別的任務(wù)讀數(shù)據(jù)

*/

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

為增進(jìn)大家對(duì)嵌入式的認(rèn)識(shí),本文將對(duì)嵌入式開發(fā)以及學(xué)習(xí)嵌入式需要注意的事項(xiàng)予以介紹。

關(guān)鍵字: 嵌入式 指數(shù) 嵌入式開發(fā)

中國(guó)上海,2025年4月7日 — 全球領(lǐng)先的嵌入式系統(tǒng)開發(fā)軟件解決方案供應(yīng)商IAR正式發(fā)布全新云就緒平臺(tái),為嵌入式開發(fā)團(tuán)隊(duì)提供企業(yè)級(jí)的可擴(kuò)展性、安全性和自動(dòng)化能力。該平臺(tái)于在德國(guó)紐倫堡舉辦的embedded world...

關(guān)鍵字: 自動(dòng)化 嵌入式開發(fā) RISC-V

在嵌入式系統(tǒng)開發(fā)領(lǐng)域,VS Code(Visual Studio Code)作為一款輕量級(jí)但功能強(qiáng)大的代碼編輯器,正逐漸成為開發(fā)者的首選工具。本文將詳細(xì)介紹如何在VS Code上搭建嵌入式開發(fā)環(huán)境,并分享一些調(diào)試技巧。

關(guān)鍵字: VS Code 嵌入式開發(fā)

隨著汽車電子化、智能化程度的不斷提高,車載以太網(wǎng)(Automotive Ethernet)作為新一代車載網(wǎng)絡(luò)通信技術(shù),正逐漸成為汽車內(nèi)部通信的主干網(wǎng)絡(luò)。它以其高帶寬、低延遲和強(qiáng)抗干擾能力,為汽車提供了更加高效、可靠的數(shù)據(jù)...

關(guān)鍵字: 車載以太網(wǎng) 嵌入式開發(fā)

隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)對(duì)實(shí)時(shí)性、低功耗和可擴(kuò)展性的要求越來越高。Zephyr RTOS(實(shí)時(shí)操作系統(tǒng))作為一款專為資源受限設(shè)備設(shè)計(jì)的開源RTOS,憑借其輕量級(jí)、模塊化和高可擴(kuò)展性,在嵌入式開發(fā)領(lǐng)域得到了廣泛...

關(guān)鍵字: 嵌入式開發(fā) Zephyr RTOS 物聯(lián)網(wǎng)

嵌入式開發(fā),作為電子工程和計(jì)算機(jī)科學(xué)交叉領(lǐng)域的重要分支,對(duì)于構(gòu)建穩(wěn)定、高效的軟件系統(tǒng)提出了獨(dú)特挑戰(zhàn)。本文將深入探討嵌入式開發(fā)的可靠方法論,結(jié)合實(shí)例與代碼,為開發(fā)者提供一套系統(tǒng)化的指導(dǎo)原則。

關(guān)鍵字: 嵌入式開發(fā) 計(jì)算機(jī)科學(xué)

嵌入式開發(fā),作為電子工程和計(jì)算機(jī)科學(xué)的交匯點(diǎn),對(duì)軟件系統(tǒng)的穩(wěn)定性和效率提出了極高的要求。本文將結(jié)合具體案例,深入探討嵌入式開發(fā)中的可靠方法論,為開發(fā)者提供一套系統(tǒng)化的指導(dǎo)原則。

關(guān)鍵字: 嵌入式開發(fā) 智能家居

在科技日新月異的今天,嵌入式開發(fā)作為連接硬件與軟件的橋梁,在物聯(lián)網(wǎng)、智能設(shè)備、工業(yè)自動(dòng)化等領(lǐng)域扮演著至關(guān)重要的角色。對(duì)于許多技術(shù)愛好者而言,自學(xué)嵌入式開發(fā)既是一個(gè)充滿魅力的挑戰(zhàn),也是一條通往創(chuàng)新實(shí)踐的必由之路。然而,這條...

關(guān)鍵字: 嵌入式開發(fā) 物聯(lián)網(wǎng)

在科技日新月異的今天,嵌入式開發(fā)與Java開發(fā)作為軟件開發(fā)領(lǐng)域的兩大重要分支,各自展現(xiàn)出了獨(dú)特的發(fā)展軌跡和市場(chǎng)前景。近年來,關(guān)于嵌入式開發(fā)是否會(huì)像Java開發(fā)一樣“卷”的討論日益增多,這背后既反映了市場(chǎng)對(duì)技術(shù)趨勢(shì)的敏銳洞...

關(guān)鍵字: 嵌入式開發(fā) Java開發(fā)

現(xiàn)在在嵌入式開發(fā)MCU中,八塊MCU仍占據(jù)三分之一以上的份額,在工業(yè)控制,安全,物聯(lián)網(wǎng),消費(fèi)電子等諸多領(lǐng)域,八塊MCU依然隨處可見。

關(guān)鍵字: 嵌入式開發(fā) MCU
關(guān)閉