基于Cortex―M3的嵌入式以太網(wǎng)門禁系統(tǒng)設(shè)計(jì)
low_level_init(netif);
③連接遠(yuǎn)程主機(jī),當(dāng)連接建立,就會(huì)調(diào)用第4個(gè)參數(shù)Conn_Back:
tcp_connect(TCP_pcb,ipaddr,1026,Conn_back);
④當(dāng)有新的數(shù)據(jù)接收到時(shí)調(diào)用的回調(diào)函數(shù):
tcp_recv(TCP_pcb.tcp_recv_callback);
⑤服務(wù)器成功接收到數(shù)據(jù)后調(diào)用的回調(diào)函數(shù):
tcp_sent(TCP_pcb,tcp_sent_callback);
⑥處理錯(cuò)誤的回調(diào)函數(shù):
tcp_err(pcb,CMD_conn_err);
⑦是否接收到數(shù)據(jù):
ethernetif_input(enc28j60);
通信一旦結(jié)束或者出現(xiàn)異常狀況后,一定要使用pbuf_free()函數(shù)釋放pbuf,避免內(nèi)存的浪費(fèi)。還有一點(diǎn)要注意的是,系統(tǒng)在正常運(yùn)行的過程中,定時(shí)器函數(shù)tcp_fasttmr()和tcp_slowtmr()函數(shù)必須以固定的時(shí)間間隔被規(guī)律地調(diào)用。
2.2 門禁系統(tǒng)軟件架構(gòu)與設(shè)計(jì)
門禁系統(tǒng)的主要流程如圖6所示,每次重新啟動(dòng)后,首先初始化相關(guān)寄存器,初始化各個(gè)模塊,確定已經(jīng)連接服務(wù)器,然后進(jìn)入程序主循環(huán)。
首先監(jiān)測(cè)是否需要調(diào)用LwIP內(nèi)部的快速定時(shí)器和慢速定時(shí)器。然后監(jiān)測(cè)服務(wù)器是否有斷開,如果斷開則重新連接服務(wù)器,沒有斷開的話則檢測(cè)是否有智能卡,有的話接收卡中信息進(jìn)行處理然后發(fā)送給服務(wù)器。
結(jié)語(yǔ)
本文對(duì)使用STM32為主控芯片的門禁系統(tǒng)的硬件和軟件架構(gòu)進(jìn)行了相應(yīng)的描述,對(duì)于文中所涉及的芯片和以太網(wǎng)協(xié)議的使用具有指導(dǎo)意義,能夠較大幅度地降低成本,同時(shí)門禁系統(tǒng)的使用會(huì)更加穩(wěn)定,傳輸距離更長(zhǎng)。
評(píng)論