基于Cortex―M3的嵌入式以太網門禁系統設計
low_level_init(netif);
③連接遠程主機,當連接建立,就會調用第4個參數Conn_Back:
tcp_connect(TCP_pcb,ipaddr,1026,Conn_back);
④當有新的數據接收到時調用的回調函數:
tcp_recv(TCP_pcb.tcp_recv_callback);
⑤服務器成功接收到數據后調用的回調函數:
tcp_sent(TCP_pcb,tcp_sent_callback);
⑥處理錯誤的回調函數:
tcp_err(pcb,CMD_conn_err);
⑦是否接收到數據:
ethernetif_input(enc28j60);
通信一旦結束或者出現異常狀況后,一定要使用pbuf_free()函數釋放pbuf,避免內存的浪費。還有一點要注意的是,系統在正常運行的過程中,定時器函數tcp_fasttmr()和tcp_slowtmr()函數必須以固定的時間間隔被規律地調用。
2.2 門禁系統軟件架構與設計
門禁系統的主要流程如圖6所示,每次重新啟動后,首先初始化相關寄存器,初始化各個模塊,確定已經連接服務器,然后進入程序主循環。

首先監測是否需要調用LwIP內部的快速定時器和慢速定時器。然后監測服務器是否有斷開,如果斷開則重新連接服務器,沒有斷開的話則檢測是否有智能卡,有的話接收卡中信息進行處理然后發送給服務器。
結語
本文對使用STM32為主控芯片的門禁系統的硬件和軟件架構進行了相應的描述,對于文中所涉及的芯片和以太網協議的使用具有指導意義,能夠較大幅度地降低成本,同時門禁系統的使用會更加穩定,傳輸距離更長。
評論