打印

LM3S9B96串口发送疑惑

[复制链接]
3185|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
买了块LM3S969B开发板,3天断断续续的用着,在使用串口做调试工具的时候发现了一个不太理解的问题。在使用utils/uartstdio.c下的串口的打印函数UARTprintf()时,每次最多只能输出18个字符,而且每次只能打印一次就停了,MCU不会再响应了。请教用过这个函数大大解释下原因。


/* Includes ------------------------------------------------------------------*/

#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "inc/hw_gpio.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "inc/waytype.h"   //自定义库,个人习惯的数据类型定义
#include "inc/wayio_lm3s9b96.h" //自定义库,端口仿51操作
#include "utils/uartstdio.h"
#include "drivers/set_pinout.h"
/*******************************************************************************
* Function Name  : Delay
* Description    : Delay Time
* Input          : - nCount: Delay Time
* Output         : None
* Return         : None
* Attention   : None
*******************************************************************************/
void Delay(uint32_t nCount)
{
for(;nCount>0;nCount--);
}

/*******************************************************************************
* Function Name  : GPIO_Configuration
* Description    : Configure GPIO
* Input          : None
* Output         : None
* Return         : None
* Attention   : None
*******************************************************************************/
void GPIO_Configuration(void)
{

GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_3,GPIO_DIR_MODE_OUT);  
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_3,GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD);

GPIODirModeSet(GPIO_PORTJ_BASE,GPIO_PIN_7,GPIO_DIR_MODE_IN);  
GPIOPadConfigSet(GPIO_PORTJ_BASE,GPIO_PIN_7,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);
}


/*******************************************************************************
* Function Name  : LedFlash
* Description    : The Led Flash Continous
* Input          : None
* Output         : None
* Return         : None
* Attention   : None
*******************************************************************************/
void LedFlash(void)
{
PF3=0x08;       //PF3置1
Delay(0xfffff);
Delay(0xfffff);
PF3=0;        //PF3置0
Delay(0xfffff);
Delay(0xfffff);

}

/*******************************************************************************
* Function Name  : UART_Configuration
* Description    : Configure UART0
* Input          : None
* Output         : None
* Return         : None
* Attention   : None
*******************************************************************************/
void UART_Configuration(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);//启用外设UART0

GPIOPinTypeUART(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1);//PA0,PA1启用复用功能

GPIOPinConfigure(GPIO_PA0_U0RX);//指定PA0复用功能为U0RX

GPIOPinConfigure(GPIO_PA1_U0TX);//指定PA1复用功能为U0TX

UARTStdioInit(0);
}


/*******************************************************************************
* Function Name  : main
* Description    : main function
* Input          : None
* Output         : None
* Return         : int
* Attention   : None
*******************************************************************************/

int main(void)
{
   ul32_t Press_times=0;

  SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
  
  PinoutSet();//启用外设GPIOA~J
   
  GPIO_Configuration();//GPIO初始化
   
  UART_Configuration();//UART初始化
   
  LedFlash();   //闪一次灯
  
  UARTprintf("hahahhhhhhhhhhhhhhahahhaha\n");//打印26字符,不含\n
   
  UARTprintf("hahahhhhhhhhhhhhhhahahhaha\n");//测试再打印一次
   
  UARTprintf("hahahhhhhhhhhhhhhhahahhaha\n");
   
   while(1)
   {
  if(!PJ7)
  {
   Delay(1000);
   if(!PJ7)
   {
    Press_times++;
    UARTprintf("你按了SW1按键%d次了!\n",Press_times);
    LedFlash();

       }
  }
   
   
   }

//   return 1;
}


/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/******************* (C) COPYRIGHT 2012 Way *****END OF FILE****/


运行结果如图:只有hahahhhhhhhhhhhhhh这18个字符

uart0test.png (14.25 KB )

uart0test.png

相关帖子

沙发
EFENSHOW|  楼主 | 2012-4-14 15:58 | 只看该作者
补充说明:程序烧录后,每次复位都会
灯闪一次
发送“hahahhhhhhhhhhhhhh”一次,且仅有这一行,
然后没反应了。
如果去除所有的UARTprintf();
下面的按键可以正常工作,就是按一次PJ7,PF3灯闪烁一次。

使用特权

评论回复
板凳
EFENSHOW|  楼主 | 2012-4-14 22:03 | 只看该作者
没人遇到么:Q

使用特权

评论回复
地板
iEye| | 2012-4-17 13:54 | 只看该作者
你单步调试下就知道问题了,utils/uartstdio.c下的串口的打印函数UARTprintf()里面,如果你没有使用buf的话也是直接通过UARTCharPut输出的。

使用特权

评论回复
5
liedc| | 2012-4-17 14:42 | 只看该作者
路过
学习一下

使用特权

评论回复
6
gaochy1126| | 2012-4-17 17:11 | 只看该作者
自己尝试编写一个print函数就行了,安全放心!

使用特权

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

本版积分规则

1

主题

25

帖子

1

粉丝