买了块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个字符 |