串口通讯的流控提供了由于某种原因不能进行通讯时阻塞通讯的一种机制。流控可以使数据接收设备在不能接收数据时通知数据发送设备,使其停止发送。串口的流控经常采用硬件流控和软件流控两种方式。开发串口通讯程序的过程中,可根据实际需要决定是否采用流控,采用硬件流控还是软件流控。使用控件Mscomm32开发串口通讯程序简单直接,若需要计算机协调与外设的数据传数时,这种方法不能满足要求;直接调用WIN32API函数的开发串口通讯程序,可以灵活的对串口进行设置,但需要较多的Windows编程背景知识。
1、串口初始化
以前,配置串口号、波特率、流控、校验位,配置好寄存器,然后使用。
现在,在workspace下找到HAL\Target\CC2530EB\drivers的hal_uart.c文件,可以看到里面已经包括了串口初始化、发送、接收等函数。
SampApp_Init()
SampApp_TransID() = 0;
MT_UartInit();
***************************************************
进入MT_UartInit()修改相应初始化配置
void MT_UartInit ()
{
halUARTCfg_t uartConfig;
/* Initialize APP ID */
App_TaskID = 0;
/* UART Configuration */
uartConfig.configured = TRUE;
uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE; //波特率
uartConfig.flowControl = MT_UART_DEFAULT_OVERFLOW;//串口流控
uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD;
uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF;
uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF;
uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;
uartConfig.intEnable = TRUE;
#if defined (ZTOOL_P1) || defined (ZTOOL_P2)//P1和P2则是串口0和串口1
uartConfig.callBackFunc = MT_UartProcessZToolData;
#elif defined (ZAPP_P1) || defined (ZAPP_P2)
uartConfig.callBackFunc = MT_UartProcessZAppData;
#else
uartConfig.callBackFunc = NULL;
#endif
/* Start UART */
#if defined (MT_UART_DEFAULT_PORT)
HalUARTOpen (MT_UART_DEFAULT_PORT, &uartConfig);
#else
/* Silence IAR compiler warning */
(void)uartConfig;
#endif
/* Initialize for ZApp */
#if defined (ZAPP_P1) || defined (ZAPP_P2)
/* Default max bytes that ZAPP can take */
MT_UartMaxZAppBufLen = 1;
MT_UartZAppRxStatus = MT_UART_ZAPP_RX_READY;
#endif
}
2、登记任务号
void SampleApp_Init( uint8 task_id )
MT_UartInit();
MT_UartRegisterTaskID(task_id);//登记任务号
把串口事件通过 task_id 登记在 SampleApp_Init();
3、串口发送
void SampleApp_Init( uint8 task_id )
MT_UartInit();
MT_UartRegisterTaskID(task_id);//登记任务号
HalUARTWrite(0, "Hello,world\n", 12); //(串口, 字符, 字符个数)***************************************************
SampleApp.c
#include "MT_UART.h" //串口头文件引用
***************************************************