?? comm.h
字號:
/**************************************************************************************************
* 文 件 名 : Comm.H
* 說 明 :
* 1> 這一版本中最大的接收和發(fā)送緩存為255為INT8U類型的最大值
**************************************************************************************************/
#ifdef COMM_GLOBALS
#define COMM_EXT
#else
#define COMM_EXT extern
#endif
/**************************************************************************************************
* 全局常量
**************************************************************************************************/
#define COMM_MODULE_EN 1 // 串口模塊總使能 0禁止
// 當串口的接收需要任務(wù)協(xié)助處理時下面兩個定義有效
//#define TaskComm1Prio 1 // 定義串口0接收任務(wù)ID 注意: 在CONFIG.H中統(tǒng)一定義
//#define TaskComm2Prio 2 // 定義串口1接收任務(wù)ID
#define COMM1_MEM_SEL // 串口0各種控制變量存儲區(qū)選擇 非C51一般為空
#define COMM2_MEM_SEL // 串口1各種控制變量存儲區(qū)選擇 非C51一般為空
#define COMM_CONST_SEL // 串口數(shù)據(jù)常量存儲區(qū)選擇 非C51一般為const或static
#define COMM0_VECTOR // 串口0中斷函數(shù)入口編號
#define COMM1_VECTOR // 串口1中斷函數(shù)入口編號
#define X0N 17 // 流控制字符 繼續(xù)發(fā)送 20%
#define XOFF 19 // 流控制字符 停止發(fā)送 70%
////////////////////////////////////////////////------------串口配置----------
#define COMM_MODE 1 // 通信模式 0異步正常模式 1異步倍速模式 2同步主機模式
#define COMM_MORE_CPU_MODE 0 // 多處理器模式 1為多處理器模式有效 0為無效
#define COMM_ACCEPT_ISR_EN 1 // 接收結(jié)束中斷 (1)使能 (0)禁止
#define COMM_SEND_ISR_EN 1 // 發(fā)送結(jié)束中斷 (1)使能 (0)禁止
#define COMM_DATAFREE_ISR_EN 1 // 數(shù)據(jù)寄存器空中斷 (1)使能 (0)禁止
#define COMM_SYN_CLOCK 1 // 同步工作模式時鐘極性 (1)下降沿 (0)上升沿
// 兩個處理CLK模塊臨界數(shù)據(jù)的兩個宏 這里使用OS的臨界宏
#define COMM_ENTER_CRITICAL() OS_ENTER_CRITICAL() // 進入臨界宏 默認COMM_ENTER_CRITICAL() EA=0
#define COMM_EXIT_CRITICAL() OS_EXIT_CRITICAL() //退出臨界宏 默認COMM_ENTER_CRITICAL() EA=1
// 串口0的常量定義
#define COMM1_UNIT_EN 1 // 串口0模塊使能 0禁止
#define COMM1_DATA_STREAM_EN 0 // ASCII方式通訊時可采樣XON/XOFF數(shù)據(jù)流模式來保證數(shù)據(jù)傳輸
#define COMM1_OS_SEL 1 // 選擇在RTOS中使用則調(diào)用OSIntSendSignal 通知接收任務(wù)處理
// 串口數(shù)據(jù) 則啟用定義TaskComm1Prio即接收任務(wù)ID 0=禁止
#define COMM1_OS_SIGNAL_SEL 1 // 0選擇發(fā)送信號 1選擇釋放信號量 同時COMM1_OS_SEL要使能
// 來通知接收任務(wù)處理數(shù)據(jù)
#define COMM1_RXD_EN 1 // 串口0接收部分使能 0禁止
#define COMM1_GETNMSGS_EN 0 // 串口0的數(shù)據(jù)計數(shù)檢測函數(shù)使能 0禁止
#define COMM1_GETS_EN 0 // 串口0接收多數(shù)據(jù) 0禁止
#define COMM1_RXD_SIZE 255 // 串口0的接收緩存配置 需要立即讀數(shù)據(jù) 否則棄數(shù)據(jù) 必須>=1
#define COMM1_TXD_EN 1 // 串口0發(fā)送部分使能 0禁止
#define COMM1_PUTS_EN 0 // 串口0發(fā)送多數(shù)據(jù) 0禁止
#define COMM1_TXD_SIZE 128 // 串口0的發(fā)送緩存配置 必須>=1
//////////////////////////////////////////////// --------------串口的各種返回信息 不能更改------------
#define COMM_ERR 0 // 串口配置有錯誤
#define COMM_NO_ERR 1 // 串口配置沒有錯誤
#define COMM_BAD_BAUD 2 // 波特率錯誤
#define COMM_BAD_MODE 3 // 串口工作為錯誤的工作方式
#define COMM_RXD_EMPTY 4 // 接收緩存沒有數(shù)據(jù) 為空
#define COMM_RXD_FALSE 5 // 接收數(shù)據(jù)失敗 只多字節(jié)接收時返回此信息
#define COMM_RXD_OK 6 // 接收數(shù)據(jù)正確
#define COMM_TXD_FALSE 7 // 發(fā)送失敗
#define COMM_TXD_OK 8 // 發(fā)送正確
#define COMM_TXD_FLOOD 9 // 發(fā)送數(shù)據(jù)溢出 快速或多字節(jié)數(shù)據(jù)發(fā)送時 緩存溢出
////////////////////////////////////////////
#if (COMM_MODE == 0)||(COMM_MODE == 1) // 異步正常模式串,異步倍速模式串
#define UMSEL_MODE 0
#define UCPOL_MODE 0
#elif COMM_MODE == 2 // 同步模式串
#define UMSEL_MODE BIT(UMSEL)
#if COMM_SYN_CLOCK == 0 // 同步工作模式時鐘極性
#define UCPOL_MODE 0
#else
#define UCPOL_MODE BIT(UCPOL)
#endif
#else // 選擇其他模式 則停止編譯
#error "(COMM_MODE)通信模式設(shè)置錯誤! "
#endif
#if COMM_MORE_CPU_MODE == 0 // 處理器模式 1為多處理器模式有效 0為無效
#define MPCM_MODE 0 //
#elif COMM_MORE_CPU_MODE == 1
#define MPCM_MODE BIT(MPCM)
#else
#error "請正確配置多處理器模式中斷使能信號 (COMM_MORE_CPU_MODE)!"
#endif
#if COMM_ACCEPT_ISR_EN == 0 // 接收結(jié)束中斷 (1)使能 (0)禁止
#define RXCIE_MODE 0 //
#elif COMM_ACCEPT_ISR_EN == 1
#define RXCIE_MODE BIT(RXCIE)
#else
#error "請正確配置接收結(jié)束中斷中斷使能信號 (COMM_ACCEPT_ISR_EN)!"
#endif
#if COMM_SEND_ISR_EN == 0 // 發(fā)送結(jié)束中斷 (1)使能 (0)禁止
#define TXCIE_MODE 0 //
#elif COMM_SEND_ISR_EN == 1
#define TXCIE_MODE BIT(TXCIE)
#else
#error "請正確配置發(fā)送結(jié)束中斷中斷使能信號 (COMM_SEND_ISR_EN)!"
#endif
#if COMM_DATAFREE_ISR_EN == 0 // 數(shù)據(jù)寄存器空中斷 (1)使能 (0)禁止
#define UDRIE_MODE 0 //
#elif COMM_DATAFREE_ISR_EN == 1
#define UDRIE_MODE BIT(UDRIE)
#else
#error "請正確配置數(shù)據(jù)寄存器空中斷使能信號 (COMM_DATAFREE_ISR_EN)!"
#endif
////////////////////////////////////////////////
#define none 0
#define even 2
#define odd 3
/********************************************************************************************************
* 全局變量和數(shù)據(jù)類型
********************************************************************************************************/
#if COMM_MODULE_EN > 0
#endif
/********************************************************************************************************
* 函數(shù)
********************************************************************************************************/
/* COMM1有關(guān)接口函數(shù)集 */
INT8U Comm1CfgPort (INT32U baud, INT8U parity, INT8U bits, INT8U stops);
void Comm1VarInit (void);
/* COMM1接收有關(guān)函數(shù) */
INT8U Comm1RxGetChar (INT8U *Data);
INT8U Comm1RxGetNMsgs (void);
INT8U Comm1RxGetsChar (INT8U *s, INT8U len);
/* COMM1發(fā)送有關(guān)函數(shù) */
INT8U Comm1TxInBuf (INT8U Data); // 數(shù)據(jù)進入發(fā)送緩存
#define Comm1TxPutChar Comm1TxInBuf
//INT8U Comm1TxPutChar (INT8U Data);
INT8U Comm1TxPutsChar (INT8U *s, INT8U len);
/********************************************************************************************************
* End Of File
********************************************************************************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -