4.4 串口應用 因為筆者硬件設計使用UART4口,然而在《PIC32 Peripheral Libraries for MPLAB C32 Compiler》庫里卻找不到使用UART4的庫函數。歷經百度百般搜索,終于獲得了一點蛛絲馬跡:原文如下
PIC32MX 5/6/7系列的C32用法,已經完全變了一個方式。
範例程式所用的是依新版的用法,也可以相容PIC32MX 3/4系列。
用法說明在
MPLAB C32docpic32-lib-help下的UART-PLIB-Help.chm
另外APP1632實驗版及說明書也有提及這部份,可以參考使用。感嘆一句,神奇的萬能的百度??!結合例程,及筆者的實際硬件,做出如下調試實驗目標:1.指示燈點亮,用于表示接收數據成功。2.用串口調試助手給單片機發(fā)送數據0x01, 0x02,0x03,0x04, 0x05;串口調試助手接收到同樣的數據0x01, 0x02,0x03,0x04, 0x05。表示串口驅動調試成功。
#define pbclk 1000000#define desired_rate 4800/***********************************************************************************************函數名 字: UART4Config*功能描 述:串口1硬件驅動配置*輸 入: 無*輸 出: 無*返 回: 無*全局變量: 無*調用模塊: 使用內部8M FRC作為時鐘源+ 8分頻 = 1 M 外設時鐘 里的串口驅動部分**-------------------------------------------------------------------------**項 目 組: **創(chuàng)建日期: **作 者: ****版 本: ******-------------------------------------------------------------------------**修 改 者:**修 改 日 期:**版 本:**版 本 描 述:*************************************************************************************************/void UART4Config(void){ //配置和使能UART4, 關閉CTS, RTS數據流信號,只啟用TX,RX UARTConfigure(UART4, UART_ENABLE_PINS_TX_RX_ONLY); //設置FIFO中斷方式 //TX FIFO緩沖區(qū)未填充滿時中斷-- 緩沖區(qū)未填滿。 //RX緩沖器非空時中斷-- 緩沖區(qū)有數據。 UARTSetFifoMode(UART4, UART_INTERRUPT_ON_TX_NOT_FULL | UART_INTERRUPT_ON_RX_NOT_EMPTY); //設置為數據位8,無校驗位,1位停止位 UARTSetLineControl(UART4, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1); //設置波特率,后面兩個參數分別是PBCLK和期望的波特率 UARTSetDataRate(UART4, pbclk, desired_rate); //使能UART模塊,使能發(fā)送,使能接收 UARTEnable(UART4, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));// 配置UART4接收中斷 INTEnable(INT_SOURCE_UART_RX(UART4), INT_ENABLED); INTSetVectorPriority(INT_VECTOR_UART(UART4), INT_PRIORITY_LEVEL_2); INTSetVectorSubPriority(INT_VECTOR_UART(UART4), INT_SUB_PRIORITY_LEVEL_0); // configure for multi-vectored mode INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR); // enable interrupts INTEnableInterrupts();}/***********************************************************************************************函數名 字: WriteString(const char *string)*功能描 述: UART4數據流發(fā)送函數*輸 入: string -- 需要發(fā)送的字符串*輸 出: 無*返 回: 無*全局變量: 無*調用模塊:**-------------------------------------------------------------------------**項 目 組:**創(chuàng)建日期: **作 者: ****版 本: ******-------------------------------------------------------------------------**修 改 者:**修 改 日 期:**版 本:**版 本 描 述:*************************************************************************************************/void WriteString(const char *string){ while (*string != '