今天看到usb虛擬串列埠的例子,有一段這樣的語句:
usb的配置通過三個函式完成:
usb_interrupts_config()
、set_usbclock()
和usb_init()
,第乙個函式用於設定
usb
喚醒中斷和
usb
低優先順序資料處理中斷,
set_usbclock
函式用於 配置
usb
時鐘,也就是從
72m的主頻
得到 48m
的 usb
時鐘(1.5
分頻)。最後
usb_init()
函式用於初始化
usb,最主要的就是呼叫
了 virtual_com_port_init
函式,開啟了
usb部分的電源等。這裡需要特別說明的是,
usb配置
並沒有對
pa11
和 pa12
這兩個
io口進行設定,是因為,一旦開啟了
usb電源(
usb_cntr
的 pdwn
位清零)
pa11
和pa12
將不再作為其他功能使用,僅供
usb使用,所以在開啟了
usb電源之後不論你怎麼配置這兩個
io口,都是無效的。要在此獲取這兩個
io口的配置權,則需
要關閉
usb
電源,也就是置位
usb_cntr
的 pdwn
位,我們通過
usb_port_set
函式來禁止
/允許
usb
連線,在復位的時候,先禁止,再允許,這樣每次我們按復位電腦都可以識別到
usb滑鼠,而不需要我們每次都拔
usb線。
裡面說通過使用usb_port_set
函式禁止允許就可以不需要每次復位都拔usb線,不太理解,查了下暫存器。
函式:
void usb_port_set(u8 enable)
} enable非零時,getcntr()&(~(1<<1))其實也就是將usb_cntr 暫存器的1位置0;如下圖為暫存器
0時為對出斷電模式,1時進入斷電模式。根據這個就可以時usb進入退出斷電模式,而且解決了復位重新插拔的問題唉。(退出後最好稍微延時一段時間,讓暫存器清除一些標誌)
usb功能概述:資料緩衝區、每個端點最大512位元組,最多16個單向或8個雙向端點、
關於串列埠和usb轉串列埠
硬體上考慮,串列埠還是要隔離,否則引發的風險是產品不能承受的,現在市場上的max232,質量沒有什麼保證,有過一批勉強用了一年多,還是有些出了問題。usb轉出來的串列埠一樣也要隔離,而且需要注意的是usb是很容易受到干擾的,市場上還是沒有usb端短,串列埠線長的轉換器件,需要可靠性的客戶還是推薦使用...
python虛擬串列埠 python 虛擬串列埠通訊
準備著手寫乙個串列埠工具,當前程式設計環境,並沒有辦法接好下位機平台,需要模擬出乙個串列埠,不斷傳送資訊,方便除錯串列埠工具。這兩個串列埠是互相接通的,乙個com 可以當作上位機,乙個com可以當作下位機 2.python 實現向乙個串列埠內寫資料,另乙個串列埠內接受資料 usr bin pytho...
分辨串列埠和USB
pc機常用的通訊方式有三種 序列 並行和網路介面。目前大多數巨集碁筆記本保留有序列口,一般在筆記本的左邊,那個很多洞洞那個口就是串列埠,也稱com口,序列介面 好啦,下面講講串列埠程式開發。記住在windows上面的程式設計一切都是基於windows作業系統的。之前在寫串列埠採集資料的上位機時也頗為...