1. 芯片和STM32平臺
選擇了秉火的指南者stm32開發(fā)板卑惜。網(wǎng)上可以找到很多教程。
資料都存在百度云里啦:
https://pan.baidu.com/s/1F_n7Bx_9pSJyoR0my7cRrw
提取碼:yvn4?
硬件上根據(jù)要求連接下相應(yīng)引腳即可驻售。只要就是串口接受/發(fā)送的端口對應(yīng)連接stm32的 p9,p10引腳露久。
2. 串口通訊C代碼
根據(jù)教程里的例程修改,能復(fù)用盡量復(fù)用欺栗。串口配置函數(shù)主要有以下兩個毫痕,在main函數(shù)里調(diào)用即可,在百度云的例程里都可以找到:
static void NVIC_Configuration(void)
void USART_Config(void)
發(fā)送數(shù)據(jù)就是調(diào)用一些現(xiàn)成的senddata函數(shù)迟几,比較簡單消请。
接受數(shù)據(jù)則復(fù)雜一些,總體分為查詢和中斷兩種方法类腮,都嘗試了一下臊泰。
2.1中斷法
在main函數(shù)里調(diào)用? USART_Config(); 配置中斷。
然后在存放中斷函數(shù)的cpp里尋找串口中斷服務(wù)函數(shù)存哲。在串口中斷服務(wù)函數(shù) void DEBUG_USART_IRQHandler(void)里寫自己需要實現(xiàn)的功能因宇,但是在串口中斷服務(wù)函數(shù)仍然需要查詢一次串口標(biāo)志位 if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET),以免誤中斷祟偷。
值得注意的是察滑,中斷里如果想要對mian函數(shù)的變量進行操作,可以將變量定義為全局變量修肠,然后在串口中斷服務(wù)函數(shù)里操作贺辰。具體方法就是在main.cpp里的main函數(shù)外面定義該變量,然后在stm32f10x_it.cpp函數(shù)里extern定義改變量即可。
2.2查詢法
在main函數(shù)里調(diào)用 = getchar()函數(shù)即可饲化,一次只能接收一個字符莽鸭,如果要一直接受需要寫在循環(huán)里。
本人感覺:
將getchar()函數(shù)寫在循環(huán)里=串口中斷
串口中斷+全局變量 = 循環(huán) getchar() 然后在循環(huán)里操作變量吃靠。
字符串的接收有點復(fù)雜硫眨,準(zhǔn)備專門研究一下。
3 QT上位機
用基于C++的QT寫的上位機巢块,所以就調(diào)用了QT的串口函數(shù)礁阁。bug非常非常多,下次文章總結(jié)一下吧族奢。