两块stm32仿真protues串口通信程序
這是本人一個(gè)作業(yè),卻整整花了兩天時(shí)間才搞完,因?yàn)榫W(wǎng)上關(guān)于stm32的仿真很少,所以應(yīng)該是網(wǎng)上第一份protues兩塊單片機(jī)實(shí)現(xiàn)串口交互的程序,實(shí)在是值得紀(jì)念一下。
前文提要,由于protues仿真庫函數(shù)bug太多,所以采用寄存器的初始化版本原作者
后面會(huì)發(fā)原程序下載地址
首先我們知道串口交互程序需要uasrt初始化,這邊采用的是原子哥的例程實(shí)驗(yàn)四的初始化,這個(gè)可以自行參考資料,這邊就不放代碼圖了。
led和key配置,這邊放兩個(gè)的.h代碼就好
這兩個(gè)初始化程序也是原子哥的,可以自行找代碼參考如何實(shí)現(xiàn)。
這個(gè)是作業(yè)內(nèi)容,但是問題是如何實(shí)現(xiàn)
按鍵控制實(shí)現(xiàn)比較簡(jiǎn)單,如何實(shí)現(xiàn)發(fā)送信號(hào)和接收信號(hào)是一個(gè)問題
首先必須知道usar的函數(shù)是如何實(shí)現(xiàn),這邊就介紹我們需要的發(fā)送和接收就好。
0x02就是十六進(jìn)制,0x02=00000010,這里我也不多贅述了。
這邊還有一個(gè)關(guān)鍵點(diǎn),很多人可能發(fā)送數(shù)據(jù)只會(huì)發(fā)一個(gè)數(shù)據(jù),例如:
因?yàn)閿?shù)據(jù)還來不及發(fā)送,數(shù)據(jù)就被后面來的數(shù)據(jù)覆蓋了,所以收到的數(shù)據(jù)是02,不是00 01 02
USART_SendData(USART1,0x00) ; delay_ms(1); USART_SendData(USART1,0x01) ; delay_ms(1); USART_SendData(USART1,0x02) ; delay_ms(1); 這樣收到的才是00 01 02這個(gè)是個(gè)蠢辦法,但是由于本人也還沒理解那么多,就先用著,后面鏈接就是參考來源,里面有一個(gè)更好的設(shè)置辦法。
參考
然后是接收函數(shù)
這個(gè)函數(shù)我也放個(gè)鏈接個(gè)需要的同學(xué)參考
STM32通過串口控制LED閃爍或者呼吸效果
這邊也有一個(gè)問題,由于protues仿真只能讀取第一一個(gè)字符,所以后面調(diào)試過程我基本都是使用串口模擬器,讓計(jì)算機(jī)來調(diào)試。
然后是主函數(shù)的東西,由于我寫的比較亂就放出一個(gè)給別人參考后面放源程序鏈接給同學(xué)。
這里面由于原本的時(shí)鐘不知道為什么定時(shí)不精確,也沒去深究,就自己按原本那個(gè)寫了一個(gè)新的放進(jìn)main.c函數(shù)里面了。
這樣程序部分就完成了。
然后是仿真部分,先上一份仿真圖
這里面的stm32需要設(shè)置72MHZ,然后由于virtual teminal會(huì)吞掉信號(hào),所以我們不使用他,后面看波形,我們?cè)谟檬静ㄆ骺础?br /> 用串口模擬器和xcom調(diào)試看看運(yùn)行如何。
發(fā)現(xiàn)符合要求,這邊仿真圖看看就行,因?yàn)閜rotues的局限性太大了,這是我目前能做出來最完美的一份,然后兩塊單片機(jī)交互時(shí)候,大家可以自行用protues去嘗試,也是能成功的,希望對(duì)大家有用。
資源下載
QQ3209448656
總結(jié)
以上是生活随笔為你收集整理的两块stm32仿真protues串口通信程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库设计-网上书店系统
- 下一篇: 河北省对口计算机打字试题,河北省对口升学