|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關(guān)于串口驅(qū)動(dòng)及中間件的使用--影舞者 |
| 作者:ddees 欄目:ARM技術(shù) |
用了一段時(shí)間的2214,做了一個(gè)串口驅(qū)動(dòng)和中間件的程序,此程序適用于 利用報(bào)文進(jìn)行通信的地方,如電力設(shè)備等等,在應(yīng)用中測(cè)試通信 環(huán)境支持: 1:UCOS-II操作系統(tǒng) 2:2214CPU 原先的通信問(wèn)題: 1:在電力通信一般是以報(bào)文通信為主,串口每收到一個(gè)字節(jié)就中斷一次,再由上層程序再處理,根據(jù)報(bào)文協(xié)議操作,這程序易亂,且維護(hù)不易,在擴(kuò)展通信協(xié)議時(shí)更不好處理 2:CPU利用低 現(xiàn)在的通信修改,對(duì)通信僅提供五個(gè)函數(shù),管理所有的通信口 ARM_UARTS_EXT uint8 Driver_Comm_Init(void); ARM_UARTS_EXT uint8 Driver_Set_Comm_State(uint8 use_index,uint8 use_state); ARM_UARTS_EXT uint8 Driver_Release_Comm(uint8 use_index); ARM_UARTS_EXT uint8 Driver_Apply_Comm(uint8 use_for); ARM_UARTS_EXT uint8 Driver_Comm_Frame(uint8 *Frame_Data,uint16 Frame_Length,uint8 uart_num,uint8 wait_echo); 此程序還沒(méi)有處理超時(shí)接收問(wèn)題,使用時(shí)注意 /***************************************************************************************** 版權(quán)所有: 影舞者 版本號(hào): 2.52 文件名: ARM_UARTS.H 生成日期: 1900.1.1 作者: 影舞者 功能說(shuō)明: 系統(tǒng)串口通信配置文件 其它說(shuō)明: 管理ARM的所有串口通信,目前管理 UART0、UART1、SPI0、SPI1四個(gè) *****************************************************************************************/ #ifdef ARM_UARTS_GLOBALS #define ARM_UARTS_EXT #else #define ARM_UARTS_EXT extern #endif // 緩沖區(qū)設(shè)置 #define Frame_Number 60 // 幀數(shù) #define Frame_Size 300 // 幀大小 ARM_UARTS_EXT uint8 Driver_Comm_Buf[Frame_Number][Frame_Size]; // 緩沖區(qū) ARM_UARTS_EXT uint8 Driver_Comm_Users[Frame_Number]; // 幀用途 ARM_UARTS_EXT uint16 Driver_Comm_Number[Frame_Number]; // 幀里數(shù)據(jù)大小 ARM_UARTS_EXT uint16 Driver_Comm_Index[Frame_Number]; // 幀數(shù)據(jù)操作索引 ARM_UARTS_EXT OS_EVENT *DRIVER_COMM_OPERATE; // 緩沖區(qū)操作權(quán)信號(hào)量,有數(shù)據(jù)等待操作時(shí),信號(hào)量不為0 // 通信監(jiān)視開(kāi)關(guān),1-開(kāi).0-關(guān) ARM_UARTS_EXT uint8 OPEN_UART0_COMM; // UART0通信監(jiān)視開(kāi)關(guān) ARM_UARTS_EXT uint8 OPEN_UART1_COMM; // UART1通信監(jiān)視開(kāi)關(guān) ARM_UARTS_EXT uint8 OPEN_SPI0_COMM; // SPI0通信監(jiān)視開(kāi)關(guān) ARM_UARTS_EXT uint8 OPEN_SPI1_COMM; // SPI1通信監(jiān)視開(kāi)關(guān) ARM_UARTS_EXT uint8 OPEN_POSSE_COMM; // 所有通信監(jiān)視開(kāi)關(guān) // 是否應(yīng)答 #define WAIT_ECHO 1 #define NO_ECHO 0 // UARTS報(bào)文緩沖區(qū),幀用途: #define COMM_BUF_IDLESSE 00 // 空閑空間 #define UART0_SEND 10 // 申請(qǐng)用于UART0發(fā)送數(shù)據(jù) #define UART0_SEND_OK 11 // 處理完畢,數(shù)據(jù)可以UART0發(fā)送 #define UART0_RECEIVE 12 // 申請(qǐng)用于UART0發(fā)送數(shù)據(jù) #define UART0_RECEIVE_OK 13 // 處理完畢,接收完UART0數(shù)據(jù) #define UART1_SEND 20 // 申請(qǐng)用于UART1發(fā)送數(shù)據(jù) #define UART1_SEND_OK 21 // 處理完畢,數(shù)據(jù)可以UART1發(fā)送 #define UART1_RECEIVE 22 &nb |
| 2樓: | >>參與討論 |
| 作者: jft 于 2005/12/27 16:42:00 發(fā)布:
hao |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |