STM32學(xué)習(xí)筆記:adc采樣得到的電壓值用485發(fā)送給pc
采用adc1的通道10,將采集到的電壓值用485發(fā)送給PC顯示,
先上原理圖,
源代碼見附件,
這里想說的是幾個(gè)要注意的問題:
1,ad輸入的電壓經(jīng)過了R42和R44進(jìn)行分壓,所以pc顯示的電壓值將會減半,
2、采用這個(gè)函數(shù)進(jìn)行發(fā)送數(shù)據(jù)的時(shí)候,每次都是發(fā)送一個(gè)8位的數(shù)據(jù)(即一個(gè)字節(jié)),也就是最大值為256,。超過1個(gè)字節(jié)默認(rèn)發(fā)送地位,即你要發(fā)送的數(shù)據(jù)位0x0145,只會發(fā)送45,具體可以參考數(shù)據(jù)手冊,下圖,
USART_SendData(USART3,ADC_Value_B);1
3,pc 機(jī)上收集到的數(shù)據(jù),如果沒有勾選“以HEX顯示”則顯示的是acsii碼,而我們發(fā)送數(shù)據(jù)給PC機(jī)發(fā)送的則是hex,所以這里要進(jìn)行一次轉(zhuǎn)換。HEX–>ascii
4、控制485的發(fā)送和接收的引腳是TR485-U3–>PB12, 通過光耦隔離芯片,接到了485的RE’和DE上,由光耦可知,PB12=1,光耦中的1,2腳不導(dǎo)通,沒有光發(fā)射到3,4引腳,RE’/DE輸出為低電壓,也就是RE’有效,接收數(shù)據(jù)。反之,PB12 = 0,發(fā)送數(shù)據(jù)。
//RS485發(fā)送len個(gè)字節(jié).//buf:發(fā)送區(qū)首地址//len:發(fā)送的字節(jié)數(shù)(為了和本代碼的接收匹配,這里建議不要超過64個(gè)字節(jié))voidRS485_Send_Data(u8*buf,u8len){u8t;RS485_TX_EN(0);//設(shè)置為發(fā)送模式for(t=0;t附件:
http://download.csdn.net/detail/qq_33559992/9581825