我們在使用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...