Esempio n. 1
0
/******************************************************************************
 * @Function USART_Config
 * @Brief    Config USART at STM32F4 USART3:
 *					 BaudRate							9600
 *           WordLength						8-bits
 *					 StopBits							1
 *					 HardwareFlowControl		None
 *					 Mode									Tx & Rx
 *
 **/
void USART_Config( void )
{
    GPIO_InitTypeDef GPIO_InitStruct;
    USART_InitTypeDef USART_InitStruct;

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,  ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2);
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2);

    /* USART3 Tx PA2 */	/* USART3 Rx PA3 */
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

    USART_InitStruct.USART_BaudRate = 9600;
    USART_InitStruct.USART_WordLength = USART_WordLength_8b;
    USART_InitStruct.USART_StopBits = USART_StopBits_1;
    USART_InitStruct.USART_Parity = USART_Parity_No;
    USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    USART_Init(USART2, &USART_InitStruct);
    USART_Cmd(USART2, ENABLE);

    // initial at line one column 1
    USART_SendStr(USART2, (u8*) "\r");

} // END USART_Config
Esempio n. 2
0
/*
函数功能:	列出文件夹中的所有项目
参数	:	CurDir	当前文件夹
返回值	:	void
*/
void LsDir(FS_Object* CurDir)	
{	
	DIR_tag		*DirTag;	 
	LongDir_Ent	*LongDirEnt;
	u32 	CurClus;
	u16		CurEntAddr;
   	u8		CurSec,LngNmCnt,DirEntCnt;
	u16		Name_Buffer[53]; //最多容纳4个目录项 共52个Unicode字符
	u8		*Name;

	Name_Buffer[52]=0;
	CurClus=CurDir->FstClus;
	LngNmCnt=4;
	DirEntCnt=4;
	do
	{
		/***** Read and Scan FS_Object Data Aera by Sector ******/
		for(CurSec=0;CurSec<FS.Sec_PerClus;CurSec++)
		{
			ReadSec(CurClus,CurSec,FS_Buffer);
	
			/***** Scan Every DirEntry , 32 Bytes per DirEntry! *****/
			for(CurEntAddr=0;CurEntAddr<BYTES_PERSEC;CurEntAddr+=DIRENT_SIZE)
			{
				DirTag=(DIR_tag*)((u32)FS_Buffer+CurEntAddr);
	
				if(DirTag->FileName[0]==EMPTY)
				{
					return;
				} 
				
				if(DirTag->FileName[0]!=DELETED)
				{
					if(DirTag->Attribute==LONG_NAME)
					{		   
						if(LngNmCnt!=0)
						{	
							LngNmCnt--;
							LongDirEnt=(LongDir_Ent*)DirTag;
							Name=(u8 *)Name_Buffer+LngNmCnt*26;
							CopyRam(LongDirEnt->Name1,Name,10);
							CopyRam(LongDirEnt->Name2,Name+10,12);
							CopyRam(LongDirEnt->Name3,Name+22,4);
						}
					}
					else if(DirTag->Attribute&(DIR|FILE))
					{
						if(DirTag->Attribute&DIR)
						{
							USART_SendStr(USART1,"Dir:");
						}
						else
						{
							USART_SendStr(USART1,"File:");
						}
						
						if(LngNmCnt!=4)
						{			 
							LngNmCnt=4;	  
							Convert_LngNm(Name);
							USART_SendStr(USART1,Name);
							USART1_printf("\r\n");
						}
						else
						{	
							Name=(u8 *)Name_Buffer;
							CopyRam(DirTag->FileName,Name,11);
							Convert_ShortNm(Name);
							USART_SendStr(USART1,Name);
							USART1_printf("\r\n");
						}
					}
				}
				if(LngNmCnt!=4)
				{
					DirEntCnt--;
				}
				if(LngNmCnt!=DirEntCnt)
				{
					LngNmCnt=4;
					DirEntCnt=4;
				}	
			}
		}
		CurClus=Read_NextClusNum(CurClus);
	}
	while(CurClus!=0x0fffffff);

	return;				
}