打印

TM4串口一直保持忙态

[复制链接]
946|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
        SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

/*
* 串口打印初始化
* LED 外设使能|设置输出
* 中断使能
*/
        Uart_Init_0();
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
        GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);

        IntEnable(INT_UART0);
        UARTIntEnable(UART0_BASE,UART_INT_TX);

/*
* 发送端
*/

        UARTTxIntModeSet(UART0_BASE,UART_TXINT_MODE_EOT);        //中断模式设置
        Uart_Send_0("123",3);                                                                //通过串口打印123

        while(UARTBusy(UART0_BASE) == true );                                //判断是否已经完全发完(阻塞在了此处)

        UARTConfigurationPrint(UART0_BASE,IntStatus);
        UARTConfigurationPrint(UART0_BASE,FIFOLevel | IntStatus | TxIntMode);

相关帖子

沙发
dirtwillfly| | 2017-2-22 21:16 | 只看该作者
@xyz549040622 帮看看这个问题

使用特权

评论回复
板凳
dirtwillfly| | 2017-2-22 21:21 | 只看该作者

使用特权

评论回复
地板
xyz549040622| | 2017-2-22 21:26 | 只看该作者
有两个问题
1.你的发送函数是自己写的,贴出你的发送函数来
2.你串口的初始化是怎么做的了
3.你发送用的是中断发送还是非中断发送
4.Uart_Send_0("123",3);         这句执行后,是否收到串口发送的数据
给的代码太少,无法判断。贴出全部代码。另外你的代码逻辑有点混乱,建议参考官方的代码例程。

使用特权

评论回复
5
sdCAD| | 2017-2-24 22:43 | 只看该作者
你这个中断不能接收?

使用特权

评论回复
6
sdCAD| | 2017-2-24 22:45 | 只看该作者
其他的配置代码有吗?

使用特权

评论回复
7
febgxu| | 2017-2-25 21:07 | 只看该作者
没有读取串口的数据吗?

使用特权

评论回复
8
febgxu| | 2017-2-25 21:12 | 只看该作者
通信串口数据读出之后,busy信号就应该消失了。

使用特权

评论回复
9
电子里的小学生|  楼主 | 2017-2-26 09:42 | 只看该作者
xyz549040622 发表于 2017-2-22 21:26
有两个问题
1.你的发送函数是自己写的,贴出你的发送函数来
2.你串口的初始化是怎么做的了

#include <stdint.h>
#include <stdbool.h>
#include "tm4c123gh6pm.h"
#include "hw_memmap.h"
#include "hw_types.h"
#include "sysctl.h"
#include "interrupt.h"
#include "gpio.h"
#include "timer.h"
#include "Uarts.h"

void main(void)
{
/*
* 系统时钟配置
*/
        SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

/*
* 功能模块启动
*/

/*  串口模块启动  对应中断启动          */
        Uart_Init_0();
        IntMasterEnable();
        IntEnable(INT_UART0);
        UARTIntEnable(UART0_BASE,UART_INT_TX);
       
/*         LED对应GPIO启动                         */
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
        GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);

/*
* 发送_测试代码
*/
        Uart_Send_0("123\r\n",5);                                                                //通过串口打印123
        while(UARTBusy(UART0_BASE) == false);                                        //判断是否已经完全发完
       
}

/////////////////////////////////////////////
串口设置
/////////////////////////////////////////////


#include "Uarts.h"

/*
* 初始化
* 基础打印
*/
void Uart_Init_0()
{
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
        SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);                                                 //配置PA0和PA1为串口0引脚

    GPIOPinConfigure(GPIO_PA1_U0TX);
    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_1);

    UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200,(UART_CONFIG_WLEN_8\
    | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
}

bool Uart_Send_0(const uint8_t *pucBuffer, uint32_t ulCount)                         //串口0发送函数
{
    while(ulCount--)
    {
            if( UARTCharPutNonBlocking(UART0_BASE, *pucBuffer++) == false )
            {
                    return false;
            }
    }
    return true;
}

void printfu(const uint8_t *pucBuffer)
{
        while(*pucBuffer!='\0')
        {
                UARTCharPut(UART0_BASE, *pucBuffer);
                *pucBuffer++;
        }
}

void hexadecimal_16print(uint32_t        origin)
{
        uint32_t                 Value[8];
        unsigned char          Change[8];
        int                 i;
        printfu("0x");
        for(i = 7 ; i >= 0 ; i -- )
        {
                Value = (origin >> (i*4) ) & ( 0x0000000f );
                if( Value < 10)
                {
                        Change = Value +'0';
                }
                else
                {
                        Change = Value - 10 + 'A';
                }
                UARTCharPut(UART0_BASE, Change);
        }
        printfu("\r\n");
}

使用特权

评论回复
10
电子里的小学生|  楼主 | 2017-2-26 09:45 | 只看该作者
xyz549040622 发表于 2017-2-22 21:26
有两个问题
1.你的发送函数是自己写的,贴出你的发送函数来
2.你串口的初始化是怎么做的了

能够打印出来的
前几天登陆一直登陆不了,问题一直没解决先看了的别的
刚刚入门真的很感谢愿意帮忙

使用特权

评论回复
11
电子里的小学生|  楼主 | 2017-2-26 09:45 | 只看该作者
dirtwillfly 发表于 2017-2-22 21:21
觉得可以参考这个帖子:http://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/p/202505/719905 ...

谢谢!谢谢!

使用特权

评论回复
12
电子里的小学生|  楼主 | 2017-2-26 09:49 | 只看该作者
febgxu 发表于 2017-2-25 21:12
通信串口数据读出之后,busy信号就应该消失了。

咦发送也需要读出来嘛?

使用特权

评论回复
13
电子里的小学生|  楼主 | 2017-3-6 21:24 | 只看该作者

使用特权

评论回复
14
xyz549040622| | 2017-3-6 23:12 | 只看该作者
还没解决掉吗?串口很简单的,直接用官方的例程搞定。

使用特权

评论回复
15
wengh2016| | 2017-3-7 16:52 | 只看该作者
电子里的小学生 发表于 2017-2-26 09:45
能够打印出来的
前几天登陆一直登陆不了,问题一直没解决先看了的别的
刚刚入门真的很感谢愿意帮忙 ...

使用的官网的资料吗

使用特权

评论回复
16
wengh2016| | 2017-3-7 16:53 | 只看该作者
电子里的小学生 发表于 2017-2-26 09:42
#include
#include
#include "tm4c123gh6pm.h"

UARTIntEnable(UART0_BASE,UART_INT_TX)不是初始化串口接口吗

使用特权

评论回复
17
selongli| | 2017-3-11 21:31 | 只看该作者
不是应该先配置然后发送恩

使用特权

评论回复
18
selongli| | 2017-3-11 21:35 | 只看该作者
换个配置的顺序,然后发送数据。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝