微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > CC3200在TIRTOS中同时使用两个串口

CC3200在TIRTOS中同时使用两个串口

时间:10-02 整理:3721RD 点击:

CC3200在TIRTOS中同时使用两个串口时,串口不能使用,

没有使用TIRTOS时两个串口都正常运行

下面是我在FreeRTOS Demo基础上修改的程序

int main( void )
{

BoardInit();

uart_Init();//串口初始化

osi_MsgQCreate(&MsgQ1, "MSGQ", 30, 10);
osi_MsgQCreate(&MsgQ0, "MSGQ", 30, 10);

osi_TaskCreate( vTestTask1, "TASK1",OSI_STACK_SIZE, NULL, 1, NULL );

osi_start();

return 0;
}

void uart_Init()
{
// 使能时钟
PRCMPeripheralClkEnable(PRCM_UARTA0, PRCM_RUN_MODE_CLK); //引脚映射
PinTypeUART(PIN_55, PIN_MODE_3);
PinTypeUART(PIN_57, PIN_MODE_3);
//波特率及其参数设置
UARTConfigSetExpClk(UARTA0_BASE,PRCMPeripheralClockGet(PRCM_UARTA0),
UART_BAUD_RATE, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
//设置中断回调函数
UARTIntRegister(UARTA0_BASE,uart0_handle);
//设置接收中断
UARTIntEnable(UARTA0_BASE,UART_INT_RX);

//使能fifo
UARTFIFOEnable(UARTA0_BASE);

//设置FIFO的阀值
UARTFIFOLevelSet(UARTA0_BASE,UART_FIFO_TX1_8,UART_FIFO_RX1_8);

PRCMPeripheralClkEnable(PRCM_UARTA1, PRCM_RUN_MODE_CLK); //引脚映射
PinTypeUART(PIN_07, PIN_MODE_5);//T
PinTypeUART(PIN_08, PIN_MODE_5);
UARTConfigSetExpClk(UARTA1_BASE,PRCMPeripheralClockGet(PRCM_UARTA1),
UART_BAUD_RATE, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
//设置中断回调函数
UARTIntRegister(UARTA1_BASE,uart1_handle);
//设置接收中断
UARTIntEnable(UARTA1_BASE,UART_INT_RX);

//使能fifo
UARTFIFOEnable(UARTA1_BASE);

//设置FIFO的阀值
UARTFIFOLevelSet(UARTA1_BASE,UART_FIFO_TX1_8,UART_FIFO_RX1_8);
}

void uart0_handle(void)
{
unsigned long i;
long data0;

//获取经过屏蔽的中断状态
i = UARTIntStatus(UARTA0_BASE,true);
//接收中断
if(i&UART_INT_RX)
{
//判断FIFO有没有数据
while(UARTCharsAvail(UARTA0_BASE))
{
//获取接收的数据,并直接再发送
//UARTCharPut(UARTA0_BASE,UARTCharGet(UARTA0_BASE));
data0 = UARTCharGet(UARTA0_BASE);
osi_MsgQWrite(&MsgQ0,(void *)&data0 , OSI_NO_WAIT);
}
//清除中断标志位
UARTIntClear(UARTA0_BASE,UART_INT_RX);

}

}

void uart1_handle(void)
{
unsigned long i;
long data1;
//获取经过屏蔽的中断状态
i = UARTIntStatus(UARTA1_BASE,true);
//接收中断
if(i&UART_INT_RX)
{
//判断FIFO有没有数据
while(UARTCharsAvail(UARTA1_BASE))
{
//获取接收的数据,并直接再发送
//UARTCharPut(UARTA1_BASE,UARTCharGet(UARTA1_BASE));
data1 = UARTCharGet(UARTA1_BASE);
osi_MsgQWrite(&MsgQ1,(void *)&data1 , OSI_NO_WAIT);
}
//清除中断标志位
UARTIntClear(UARTA1_BASE,UART_INT_RX);

}

}

void vTestTask1( void *pvParameters )
{
long pcMessage0;
long pcMessage1;
for( ;; )
{
/* Wait for a message to arrive. */
if(osi_MsgQRead(&MsgQ0, &pcMessage0, OSI_WAIT_FOREVER)==0)
{
UARTCharPut(UARTA0_BASE,pcMessage0);
}
if(osi_MsgQRead(&MsgQ1, &pcMessage1, OSI_WAIT_FOREVER)==0)
{
UARTCharPut(UARTA1_BASE,pcMessage1);
}


}
}

建议可以在TI RTOS操作系统下,先添加一个UART的应用,查看能否正常工作,再添加另外一个,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top