工程需要我用到CC3200两个串口,我如下修改了UART_DEMO例程,请TI技术支持务必支援
uart_demo中默认用PIN55和PIN57作为UART0_TX和UART0_RX,我现在要拓展多一个串口,该串口为UART1,我查看了引脚的规格书,里面说PIN1和PIN2的模式7对应是UART1_TX和UART1_RX。我对uart_demo例程作如下修改,但打开第二个终端还是没显示信息,望TI技术支持指点
--->修改PinMuxConfig(),里面添加多几行代码如下
MAP_PRCMPeripheralClkEnable(PRCM_UARTA1, PRCM_RUN_MODE_CLK);
MAP_PRCMPeripheralClkEnable(PRCM_GPIOA2, PRCM_RUN_MODE_CLK);
MAP_PRCMPeripheralClkEnable(PRCM_GPIOA3, PRCM_RUN_MODE_CLK);
//
// Configure PIN_16 for GPIOA2 GPIO23
//
MAP_PinTypeGPIO(PIN_16, PIN_MODE_0, false);
MAP_GPIODirModeSet(GPIOA2_BASE, 0x80, GPIO_DIR_MODE_OUT);
//
// Configure PIN_17 for GPIOA3 GPIO24
//
MAP_PinTypeGPIO(PIN_17, PIN_MODE_0, false);
MAP_GPIODirModeSet(GPIOA3_BASE, 0x1, GPIO_DIR_MODE_OUT);
//
// Configure PIN_01 for UART1 UART1_TX
//
MAP_PinTypeUART(PIN_01, PIN_MODE_7);
//
// Configure PIN_02 for UART1 UART1_RX
//
MAP_PinTypeUART(PIN_02, PIN_MODE_7);
因为规格书提示说要复用引脚,得将复用功能的默认引脚设置为其他模式,而PIN16和PIN17默认为UART1,但我要用PIN1和PIN2作为UART1,所以将PIN16和PIN17设置为GPIO,它们对应GPIO23和GPIO24
---->增添初始化终端的函数
/**Initialising the new Terminal**/
MAP_UARTConfigSetExpClk(CONSOLE_YU,MAP_PRCMPeripheralClockGet(CONSOLE_PERIPH_YU),
UART_BAUD_RATE, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
其中宏CONSOLE_YU和CONSOLE_PERIPH_YU是我自己定义的
#define CONSOLE_YU UARTA1_BASE
#define CONSOLE_PERIPH_YU PRCM_UARTA1
----->清空新的终端 /**Clearing the new Terminal**/
ClearTerm_yu();
void ClearTerm_yu()
{
{
Message_yu("\33[2J\r");
}
}
其中Message_yu是我根据Message稍作修改
void Message_yu(const char *str)
{
if(str != NULL)
{
while(*str!='\0')
{
MAP_UARTCharPut(CONSOLE_YU,*str++);
}
}
}
------>最后我在main函数中添加多一句
Message_yu("hello\n\r");
问题来了,我确定自己USB转串口的引脚没接错,但打开新的终端,该终端对应UART1,但并没有打印出hello
是我程序哪里有问题吗?还是其他问题?
http://www.deyisupport.com/question_answer/wireless_connectivity/wifi/f/105/t/77439.aspx
参考这个贴的回复。你那个将UART1的硬件时钟打开,使能时钟信号
另外下载这个软件配置比较方便
http://processors.wiki.ti.com/index.php/TI_PinMux_Tool?keyMatch=CC3200%20Pinmux&tisearch=Search-CN-Everything
我又看了一遍你的代码貌似没有问题,查看一下硬件看看。是不是硬件哪儿没有接对。