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

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]Ⅰ、寫在前面做軟件開發(fā)的人都知道打印信息的重要,說到打印信息,我們就不得不說UART串口打印。做單片機開發(fā)的人,打印信息主要的來源就是UART串口打印。因此,關(guān)于UART相關(guān)的知識就比較重要。printf、scanf這種標(biāo)準(zhǔn)

Ⅰ、寫在前面

做軟件開發(fā)的人都知道打印信息的重要,說到打印信息,我們就不得不說UART串口打印。做單片機開發(fā)的人,打印信息主要的來源就是UART串口打印。因此,關(guān)于UART相關(guān)的知識就比較重要。

printf、scanf這種標(biāo)準(zhǔn)的函數(shù)不只是可以在電腦上可以使用,在我們單片機上也同樣可以使用,本文只講述關(guān)于UART的基礎(chǔ)知識,關(guān)于printf、scanf這一塊后面將再次給大家整理一篇文章。

本文將結(jié)合“STM8S參考手冊”和軟件源代碼給大家講述關(guān)于UART的基礎(chǔ)知識和用法。

為方便大家閱讀,本文內(nèi)容已經(jīng)整理成PDF文件:

http://pan.baidu.com/s/1i5uWhJR

作者:strongerHuang

版權(quán)所有,未經(jīng)允許,禁止用于其它商業(yè)用途?。?!

Ⅱ、UART基礎(chǔ)知識

通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器。

STM8S微控制器家族的通用同步異步收發(fā)器(UART1、UART2或UART3)提供了一種靈活的方法和使用工業(yè)標(biāo)準(zhǔn)NZR異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。STM8的UART提供寬范圍的波特率選擇,并且支持多處理器通訊。

主要特性:

?全雙工的,異步通信

?高精度波特率發(fā)生器系統(tǒng):發(fā)送和接收共用的可編程波特率,最高達(dá)2.5Mbits/s

?可編程數(shù)據(jù)字長度(8位或9位)

?可配置的停止位-支持1或2個停止位

?單線半雙工通信(UART1)

?檢測標(biāo)志:接收緩沖器滿、發(fā)送緩沖器空、傳輸結(jié)束標(biāo)志

?6個帶標(biāo)志的中斷源

?2個中斷向量

?低功耗模式

UART同步模式

UART_CK腳是UART發(fā)送器時鐘的輸出。在起始位和停止位期間,UART_CK腳上沒有時鐘脈沖。根據(jù)UART_CR3寄存器中LBCL位的狀態(tài),發(fā)送器決定在最后一個有效數(shù)據(jù)位期間產(chǎn)生或不產(chǎn)生時鐘脈沖。 UART_CR3寄存器的CPOL位允許用戶選擇時鐘極性, UART_CR3寄存器上的CPHA位允許用戶選擇外部時鐘的相位。

在總線空閑幀和斷開幀中,外部CK時鐘處于非激活狀態(tài)。

注意:

1.UART_CK腳同UART_TX腳一起聯(lián)合工作。當(dāng)UART發(fā)送端被禁用時(TEN和REN=0),UART_CK和UART_TX管腳為高阻態(tài)。

2.在UART發(fā)送端和接收端都被禁用(TEN=REN=0)時, LBCL,CPOL和CPHA位必須被正確配置以保證時鐘脈沖正確工作;當(dāng)發(fā)送器或接收器被激活時,這些位不能被改變。

3.建議在同一條指令中設(shè)置TE和RE,以減少接收器的建立時間和保持時間。

4. UART只支持主模式:它不能使用來自其他設(shè)備的輸入時鐘以接收或發(fā)送數(shù)據(jù)(SCLK只能配置為輸出狀態(tài))。

5.本節(jié)給出的數(shù)據(jù)只有在寄存器UART_BRR2的UART_DIV[3:0]為0時才有效。否則建立時間和持續(xù)時間不再是1/16位時間,而是4/16位時間。

該功能選項可以串行地控制那些由移位寄存器組成的外設(shè),而不會失去異步通訊的功能,即仍然可以與其他異步發(fā)送接收器通訊。

UART同步傳輸?shù)睦樱?/p>


Ⅲ、軟件工程源代碼1、關(guān)于工程

本文提供的工程代碼是基于前面軟件工程“STM8S-A02_TIM精確延時(阻塞式)”增加UART串口修改而來。初學(xué)的朋友可以參看我前面對應(yīng)的基礎(chǔ)文章,那些文章講的比較詳細(xì)。

工程源代碼主要實現(xiàn)功能:UART串口基本輸出+中斷接收數(shù)據(jù)。UART串口間隔1s打印字符串“Demo...”,串口通過中斷接收數(shù)據(jù),接收到一個字符就將其通過串口發(fā)送出去。

本文重點講述關(guān)于UART的內(nèi)容:

UART_Initializes:UART串口初始化

UART1_SendByte:UART串口發(fā)送字節(jié)數(shù)據(jù)

2.代碼分析說明

A.UART_Initializes:初始化

void UART_Initializes(void)

{

UART1_Init((uint32_t)115200,UART1_WORDLENGTH_8D,UART1_STOPBITS_1,UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);

UART1_Cmd(ENABLE);

UART1_ITConfig(UART1_IT_RXNE, ENABLE);

enableInterrupts();

}

UART1_Init:包含的參數(shù):

115200:波特率

UART1_WORDLENGTH_8D:字長,8位或9位

UART1_STOPBITS_1:停止位

UART1_PARITY_NO:奇偶校驗

UART1_SYNCMODE_CLOCK_DISABLE:同步模式

UART1_MODE_TXRX_ENABLE:收發(fā)使能

這里每一個參數(shù)都可以有不同值,可參看其枚舉類型。

UART1_Cmd(ENABLE):使能UART1.

UART1_ITConfig(UART1_IT_RXNE, ENABLE):使能中斷接收。

enableInterrupts():使能全局中斷。

B.UART1_SendByte:發(fā)送字節(jié)數(shù)據(jù)

void UART1_SendByte(uint8_t Data)

{

while((UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET));

UART1_SendData8(Data);

while((UART1_GetFlagStatus(UART1_FLAG_TC)==RESET));

}

while((UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET)):等待發(fā)送為空

UART1_FLAG_TXE代表發(fā)送寄存器為空。

UART1_SendData8(Data):發(fā)送字節(jié)數(shù)據(jù)

while((UART1_GetFlagStatus(UART1_FLAG_TC)==RESET)):等待傳輸完成

UART1_FLAG_TC代表發(fā)送完成標(biāo)志。

C.中斷接收

位于stm8s_it.c文件下:

INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)

{

uint8_t temp;

temp = UART1_ReceiveData8();

UART1_SendData8(temp);

}

這里只是簡單的一個Demo例程,接收到數(shù)據(jù),將其通過串口發(fā)送出去。

UART串口有接收數(shù)據(jù)中斷,會置位接收標(biāo)志,平常我們響應(yīng)中斷,一般都會清楚中斷標(biāo)志,但串口中斷接收數(shù)據(jù),我們都會去讀取串口接收數(shù)據(jù),讀取數(shù)據(jù)會自動清除標(biāo)志位。見參考手冊中“狀態(tài)寄存器UART_SR”:


D.主函數(shù)功能

while(1)

{

LED_ON; //LED亮

TIMDelay_Nms(500);

LED_OFF; //LED滅

TIMDelay_Nms(500);

UART1_Printf((uint8_t*)"Demo..."); //串口打印(輸出)數(shù)據(jù)

}

主函數(shù)里面實現(xiàn)間隔一段時間(1s),通過UART串口發(fā)送字符串“Demo...”。

Ⅳ、下載

STM8S資料:

http://pan.baidu.com/s/1o7Tb9Yq

軟件源代碼工程(STM8S-A04_UART基本收發(fā)數(shù)據(jù)):

http://pan.baidu.com/s/1c2EcRo0


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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉