小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Zigbee協(xié)議棧(2530開發(fā)板):串口采用中斷方式

 易水殘虹 2015-10-27

GenericApp 實(shí)驗(yàn)

Zigbee協(xié)議棧(2530開發(fā)板)串口通信默認(rèn)采用的是DMA模式,假如我們想用串口中斷方式需要做哪些改動(dòng)呢? 請繼續(xù)往下閱讀吧。

首先,我們要修改兩個(gè)宏定義:

在hal_board_cfg.h頭文件中,

//*********** 自己修改 *****
//#define HAL_UART_DMA 1
#define HAL_UART_DMA 0
//**************************

//********** 自己修改 *****
//#define HAL_UART_ISR 0
#define HAL_UART_ISR 1
//*************************

另外,我們還需要設(shè)置一下串口的波特率。

比如,我們要把波特率設(shè)置為 2400。

在hal_uart.h文件中,添加一個(gè)宏定義:

//***** 自己添加 *************

#define HAL_UART_BR_2400 0x05

//*****************************

mt_uart.h文件中,

//#define MT_UART_DEFAULT_BAUDRATE HAL_UART_BR_38400
#define MT_UART_DEFAULT_BAUDRATE HAL_UART_BR_2400 //自己修改

在_hal_uart_isr.c文件中,需要修改 HalUARTOpenISR(halUARTCfg_t *config) 函數(shù),如下面紅色部分所示:

static void HalUARTOpenISR(halUARTCfg_t *config)
{
isrCfg.uartCB = config->callBackFunc;
// Only supporting subset of baudrate for code size - other is possible.
HAL_UART_ASSERT( (config->baudRate == HAL_UART_BR_2400)|| /* 自己添加 */
(config->baudRate == HAL_UART_BR_9600) ||
(config->baudRate == HAL_UART_BR_19200) ||
(config->baudRate == HAL_UART_BR_38400) ||
(config->baudRate == HAL_UART_BR_57600) ||
(config->baudRate == HAL_UART_BR_115200));

if (config->baudRate == HAL_UART_BR_57600 ||
config->baudRate == HAL_UART_BR_115200)
{
UxBAUD = 216;
}
else
{
UxBAUD = 59;
}

switch (config->baudRate)
{
//**** 自己添加 ************
case HAL_UART_BR_2400:
UxGCR = 6;
break;
//***************************

case HAL_UART_BR_9600:
UxGCR = 8;
break;
case HAL_UART_BR_19200:
UxGCR = 9;
break;
case HAL_UART_BR_38400:
case HAL_UART_BR_57600:
UxGCR = 10;
break;
default:
UxGCR = 11;
break;
}

// 8 bits/char; no parity; 1 stop bit; stop bit hi.
if (config->flowControl)
{
UxUCR = UCR_FLOW | UCR_STOP;
PxSEL |= HAL_UART_Px_RTS | HAL_UART_Px_CTS;
}
else
{
UxUCR = UCR_STOP;
}

UxCSR |= CSR_RE;
URXxIE = 1;
UxDBUF = 0; // Prime the ISR pump.
}

好啦,到這里,我們已經(jīng)把Zigbee協(xié)議棧的串口通信方式改為了中斷方式,并且把波特率改成了2400。

還有啊,中斷方式的一些函數(shù)在 _hal_uart_isr.c文件中。串口接收中斷的服務(wù)程序是

#if (HAL_UART_ISR == 1)
HAL_ISR_FUNCTION( halUart0RxIsr, URX0_VECTOR )
#else
HAL_ISR_FUNCTION( halUart1RxIsr, URX1_VECTOR )
#endif

你可以在這里處理接收到的數(shù)據(jù)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多