神奇的串列埠通訊

2021-10-01 09:14:21 字數 1922 閱讀 8122

我們在使用stm32進行一些測試的時候,會經常使用到串列埠。那麼我們可能就會有個疑問,串列埠到底是個什麼?

串列埠也就是序列介面,是用來進行通訊的,通俗來講,我們可以使用串列埠實現兩個控制器之間,或微控制器與pc端的相互傳遞資料,也就是實現了通訊的一種。

在stm32mini板上,有三個串列埠,我們經常使用與pc端進行通訊的是usart1,下面我們就以usart1為例進行介紹。

usart1的tx和rx對應pa9和pa10,在使用的時候只需要用跳線冒將他們連線就可以,因為我們的mini板上面是有ch340的晶元,所以我們直接使用usb轉串列埠的介面與pc端相連,就可以實現了pc與stm32之間的通訊。

只有這個硬體相連,肯定是不可以實現的,因此我們需要書寫相應的驅動**,才可以實現通訊,簡單來說也就是傳遞互相接受與傳送資料。

建立相應的資料夾是乙個很好的習慣,方便以後的移植,大家在練習程式設計的初期,一定要養成乙個良好的習慣,否則到後來的時候,根本不知道自己的程式是**出現了問題。

所以我們在初始化的時候,將 tx(pa9)設定為推挽復用輸出模式,將 rx(pa10)設定為浮空輸入

模式:

pa10的**,與之類似,大家自行編寫練習即可

最為主要的**就是,接受與傳送的程式,我們如實實現程式的收發,這是乙個比較困難的問題,因此這就要求我們要看手冊,去了解它的工作原理是什麼

/*這個**是學習來的!!!*/

void

usart1_irqhander

(void

)//中斷服務函式的名稱不能夠更改,要按照固定的格式書寫if(

usart_getitstaues

(usart1,usart_it_idel)!=reset)

//接收這個中斷之後,完成了所有資料的接收

t=0;//將計數變數歸零

}

這個是資料文件中的中斷服務函式,但使用了很多的全域性變數,我感覺是十分不好理解的,容易在使用的時候出現問題,因此建議大家自己去修改一下這個思路,了解一下他的工作方式就可以了。

在這個接收狀態暫存器中,共有16為,其中0-13為資料位,14和15是狀態位,所以只要去檢驗那個狀態位,也就是檢測到了接收的完成

/*方式1 接收資料*/

void

usart1_jieshou

(u8 *buffer)

//*buffer 用來存放接收到的資料

}

usart_rx_buf,usart_rx_len 這些變數在程式中要定義為全域性變數,否則會出現錯誤的。

/*方式2 接收資料*/

void

usart1_jieshou2

(u8 *buffer)

}}

傳送資料的時候,也可以直接使用usart_senddata(usart1,buf);

但是,不能夠實現直接傳送多位陣列,因此我們自己編寫一下程式

void

usart1_fasong

(u8 *buf)

}

上面所講只是我的部分所程式設計序,大家可以複製去實際除錯一下,希望可以對大家有所幫助。

如有錯誤,希望大家批評指正

我是嵌入式愛好者------「乙個愛著洋洋的人」

串列埠通訊 串列埠通訊原理

1 rs232介面 rs232 c介面聯結器一般使用型號為db 9的9芯插頭座,只需3條介面線,即 傳送資料 接收資料 和 訊號地 即可傳輸資料,其9個引腳的定義如圖11 3所示。圖11 3 rs232 c介面聯結器定義 在rs232的規範中,電壓值在 3v 15v 一般使用 6v 稱為 0 或 o...

神奇的socket通訊

socket簡介 socket誕生解決了網路上乙個重要的問題,就是完美的保障了通訊的準確性,目前網路上各種各樣的服務大多都是基於socket來完成通訊的,可見socket在通訊中舉足輕重。什麼是socket 我們目前的生活中網際網路每一秒都傳送著大量的資訊,怎麼才能準確通訊呢?我們先從標識乙個程序開...

c wifi串列埠通訊 C 中的串列埠通訊

序列介面 serial port 又稱 串列埠 主要用於序列式逐位資料傳輸。常見的有一般電腦應用的rs 232 使用 25 針或 9 針聯結器 和工業電腦應用的半雙工rs 485與全雙工rs 422。序列介面按電氣標準及協議來分,包括rs 232 c rs 422 rs485 usb等。rs 232...