4811|4

5

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

tm4c123gxl使用串口,不连接串口设备(比如usb转串口)就不能用,为什么 [复制链接]

配置使用tm4c123的几个串口,发现必须连上usb转串口,这个串口就能使,不连接,程序卡死。什么原因,下面贴上代码
//UART2
void ConfigureUART2(void)
{

     //
    // Enable the peripherals used by this example.
    //
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART2);
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

                //
    // Enable processor interrupts.
    //
    ROM_IntMasterEnable();
       
                //PD7±»êÇËøסáËμÄ£¬ê1óøÃòy½ÅμÄÆäËû1|ÄüDèòa½«¸ÃIO¿ú½aËø£¬ÅäÖÃíê1|ÄüoóÔùÖØDÂËø¶¨
                //PF0ò2êÇèç′Ë£¬μ«PF0μÄè·¶¨ÖμÎa0x01
                HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;        //½aËø
                HWREG(GPIO_PORTD_BASE + GPIO_O_CR) |= 0x80;//è·èÏ
                HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = 0;//ÖØDÂËø¶¨
       
    ROM_GPIOPinConfigure(GPIO_PD6_U2RX);
    ROM_GPIOPinConfigure(GPIO_PD7_U2TX);
    ROM_GPIOPinTypeUART(GPIO_PORTD_BASE, GPIO_PIN_6 | GPIO_PIN_7);
               
               
                //
    // Configure the UART for 115,200, 8-N-1 operation.
    //
                ROM_UARTConfigSetExpClk(UART2_BASE, ROM_SysCtlClockGet(), 115200,
                            (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                             UART_CONFIG_PAR_NONE));

                //
    // Enable the UART interrupt.
    //
    ROM_IntEnable(INT_UART2);
    ROM_UARTIntEnable(UART2_BASE, UART_INT_RX | UART_INT_RT);
       
}

//UART3
void ConfigureUART3(void)
{

     //
    // Enable the peripherals used by this example.
    //
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART3);
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);

                //
    // Enable processor interrupts.
    //
    ROM_IntMasterEnable();
       
    //
    // Configure GPIO Pins for UART mode.
    //
    ROM_GPIOPinConfigure(GPIO_PC6_U3RX);
    ROM_GPIOPinConfigure(GPIO_PC7_U3TX);
    ROM_GPIOPinTypeUART(GPIO_PORTC_BASE, GPIO_PIN_6 | GPIO_PIN_7);
               
                //
    // Configure the UART for 115,200, 8-N-1 operation.
    //
                ROM_UARTConfigSetExpClk(UART3_BASE, ROM_SysCtlClockGet(), 115200,
                            (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                             UART_CONFIG_PAR_NONE));

                //
    // Enable the UART interrupt.
    //
    ROM_IntEnable(INT_UART3);
    ROM_UARTIntEnable(UART3_BASE, UART_INT_RX | UART_INT_RT);
       
}
//UART4
void ConfigureUART4(void)
{

     //
    // Enable the peripherals used by this example.
    //
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART4);
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);

                //
    // Enable processor interrupts.
    //
    ROM_IntMasterEnable();
       
    //
    // Configure GPIO Pins for UART mode.
    //
    ROM_GPIOPinConfigure(GPIO_PC4_U4RX);
    ROM_GPIOPinConfigure(GPIO_PC5_U4TX);
    ROM_GPIOPinTypeUART(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_5);
               
                //
    // Configure the UART for 115,200, 8-N-1 operation.
    //
                ROM_UARTConfigSetExpClk(UART4_BASE, ROM_SysCtlClockGet(), 115200,
                            (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                             UART_CONFIG_PAR_NONE));

                //
    // Enable the UART interrupt.
    //
    ROM_IntEnable(INT_UART4);
    ROM_UARTIntEnable(UART4_BASE, UART_INT_RX | UART_INT_RT);
}

//UART5
void ConfigureUART5(void)
{

     //
    // Enable the peripherals used by this example.
    //
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART5);
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);

                //
    // Enable processor interrupts.
    //
    ROM_IntMasterEnable();
       
    //
    // Configure GPIO Pins for UART mode.
    //
    ROM_GPIOPinConfigure(GPIO_PE4_U5RX);
    ROM_GPIOPinConfigure(GPIO_PE5_U5TX);
    ROM_GPIOPinTypeUART(GPIO_PORTE_BASE, GPIO_PIN_4 | GPIO_PIN_5);
               
                //
    // Configure the UART for 115,200, 8-N-1 operation.
    //
                ROM_UARTConfigSetExpClk(UART5_BASE, ROM_SysCtlClockGet(), 115200,
                            (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                             UART_CONFIG_PAR_NONE));

                //
    // Enable the UART interrupt.
    //
    ROM_IntEnable(INT_UART5);
    ROM_UARTIntEnable(UART5_BASE, UART_INT_RX | UART_INT_RT);
}

最新回复

好久没用这个单片机了,UART_INT_RT 这个中断是什么意思?  详情 回复 发表于 2017-3-10 09:09
 
点赞 关注

回复
举报

5

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
首先说下,连着usb转串口代码正常运行,串口也能用,拔掉串口,噔噔,死机
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
自问自答一下,发现这个是这个使能了这个的问题UART_INT_RT,但是串口1,也使能了这个,但是是正常的,不知道为什么
 
 
 

回复

1803

帖子

0

TA的资源

五彩晶圆(高级)

4
 
好久没用这个单片机了,UART_INT_RT 这个中断是什么意思?
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

5
 
前面说的有点问题,再回复下,串口使能后需要在后面加上短暂延时,例如
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART5);
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
                SysCtlDelay(10);
这样完美解决问题
而这个之前可能是由于在串口时钟未到之前就对串口进行操作,导致死机。
但为什么仅仅去掉操作这个UART_INT_RT接收超时中断寄存器就不会死机呢
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表