1. 程式人生 > >BLE-CC254x-1.4.2.2之uart

BLE-CC254x-1.4.2.2之uart

協議棧:BLE-CC254x-1.4.2.2

---------------------------------------------------------------將預設的

INT_HEAP_LEN=3072
HALNODEBUG
OSAL_CBTIMER_NUM_TASKS=1
HAL_AES_DMA=TRUE
HAL_DMA=TRUE   //預設使用的是DMA的查詢方式。
POWER_SAVING

xPLUS_BROADCASTER
HAL_LCD=TRUE
HAL_LED=FALSE
HAL_KEY=TRUE

---------------------------------------------------------------改為

INT_HEAP_LEN=3072
HALNODEBUG
OSAL_CBTIMER_NUM_TASKS=1
HAL_AES_DMA=TRUE

HAL_DMA=TRUE 
xPOWER_SAVING

HAL_UART_DMA=2    // UART1通道的DMA方式  (HAL_UART_ISR=2  UART1通道的中斷方式

HAL_UART=TRUE

DEBUG_PRINT

xPLUS_BROADCASTER
HAL_LCD=FALSE
HAL_LED=FALSE
HAL_KEY=FALSE

---------------------------------------------------------------關閉流控

#if !defined( NPI_UART_FC )
#define NPI_UART_FC                   FALSE // TRUE
#endif // !NPI_UART_FC

---------------------------------------------------------------新增printf()

#include "stdarg.h"


void printf(const char* fmt,...)    // add
{  
// 自定義了“DEBUG_PRINT”巨集進行控制
#ifdef DEBUG_PRINT
    va_list ap;  
    uint8 buffer[100];  
    uint16 len;  
      
    va_start(ap,fmt);  
    len = vsprintf((char *)buffer,fmt,ap);  
    va_end(ap);  
    NPI_WriteTransport(buffer,len);  
#else  
    return;//遮蔽串列埠列印輸出  
#endif  
}

---------------------------------------------------------------

static void NpiSerialCallback( uint8 port, uint8 events )  // add
{  
    (void)port;//加個 (void),是未了避免編譯告警,明確告訴緩衝區不用理會這個變數  
  
    if (events & (HAL_UART_RX_TIMEOUT | HAL_UART_RX_FULL))   //串列埠有資料  
    {  
        uint8 numBytes = 0;  
  
        numBytes = NPI_RxBufLen();           //讀出串列埠緩衝區有多少位元組  
          
        if(numBytes == 0)  
        {  
            return;  
        }  
        else  
        {  
            //申請緩衝區buffer  
            uint8 *buffer = osal_mem_alloc(numBytes);  
            if(buffer)  
            {  
                //讀取讀取串列埠緩衝區資料,釋放串列埠資料     
                NPI_ReadTransport(buffer,numBytes);     
  
                //把收到的資料傳送到串列埠-實現迴環   
                NPI_WriteTransport(buffer, numBytes);    
  
                //釋放申請的緩衝區  
                osal_mem_free(buffer);  
            }  
        }  
    }  

--------------------------------

--------------------------------