Exemple #1
0
/**********************************************************

  BPB信息显示子函数

**********************************************************/
void  BPB_INFO(void)
{
   data_change2(BPBbytesPerSec);  //每个扇区的字节数
   LCD_ShowString(2,24,colors[0],colors[7],"BPBbytesPerSec");
   LCD_ShowChar( 2,40,colors[2],colors[7],data_temp[0]);
   LCD_ShowChar(10,40,colors[2],colors[7],data_temp[1]);
   LCD_ShowChar(18,40,colors[2],colors[7],data_temp[2]);

   data_change2(BPBSecPerClust);  //每个簇的扇区数
   LCD_ShowString(2,56,colors[0],colors[7],"BPBSecPerClust");
   LCD_ShowChar( 2,72,colors[2],colors[7],data_temp[0]);
   LCD_ShowChar(10,72,colors[2],colors[7],data_temp[1]);
   LCD_ShowChar(18,72,colors[2],colors[7],data_temp[2]);

   data_change2(BPBRevdFATSec);	  //保留扇区数
   LCD_ShowString(2,88,colors[0],colors[7],"BPBRevdFATSec");
   LCD_ShowChar( 2,104,colors[2],colors[7],data_temp[0]);
   LCD_ShowChar(10,104,colors[2],colors[7],data_temp[1]);
   LCD_ShowChar(18,104,colors[2],colors[7],data_temp[2]);

/* data_change2(BPBhiddsector);	  //隐藏扇区数
   LCD_ShowString(2,120,colors[0],"BPBhiddsector");
   LCD_ShowChar( 2,136,colors[2],data_temp[0]);
   LCD_ShowChar(10,136,colors[2],data_temp[1]);
   LCD_ShowChar(18,136,colors[2],data_temp[2]);	*/

   data_change1(BPBFATPerSec16);  //每个FAT的扇区数
   LCD_ShowString(2,120,colors[0],colors[7],"BPBFATPerSec");
   LCD_ShowChar( 2,136,colors[2],colors[7],data_temp[0]);
   LCD_ShowChar(10,136,colors[2],colors[7],data_temp[1]);
   LCD_ShowChar(18,136,colors[2],colors[7],data_temp[2]);
   LCD_ShowChar(26,136,colors[2],colors[7],data_temp[3]);
   LCD_ShowChar(34,136,colors[2],colors[7],data_temp[4]);
}
Exemple #2
0
//主任务的任务函数
void main_task(void *p_arg)
{
	u8 key,num;
	OS_ERR err;
	u8 *p;
	while(1)
	{
		key = KEY_Scan(0);  //扫描按键
		if(key==WKUP_PRES)
		{
			tmr1sta = !tmr1sta;
			if(tmr1sta) 
			{
				OSTmrStart(&tmr1,&err);
				LCD_ShowString(40,150,100,16,16,"TMR1 START!");
			}
			else
			{
				OSTmrStop(&tmr1,OS_OPT_TMR_NONE,0,&err); //停止定时器1
				LCD_ShowString(40,150,100,16,16,"TMR1 STOP! ");
			}
		}
		num++;
		if(num%10==0) check_msg_queue(p);//检查DATA_Msg消息队列的容量
		if(num==50)
		{
			num=0;
			LED0 = ~LED0;
		}
		OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err);   //延时10ms
	}
}
Exemple #3
0
  int main(void)
 {
	 u8 t=0;	
	 u16 Time=0,dis_pre=0;
	 float V_ave;	//平均速度
	 char code_ave[5],code_v[5],code_vr[5], mileage[5];//信息储存数组
	 
	delay_init(72);	    	 			//延时函数初始化	  
	Stm32_Clock_Init(9);		  //系统时钟设置
	uart_init(72,9600);	 	 		  //串口初始化为9600
	usmart_dev.init(72);			//初始化USMART	
	EXTIX_Init();							//外部中断初始化
	TIM3_Int_Init(5000,7199); //10Khz的计数频率,计数到5000为500ms 
	LCD_Init();				 				//  PE.ALL,PD1~5  
	LCD_Display_Dir(1);				//设置显示方向为横屏显示
	LED_Init();		  					//初始化与LED连接的硬件接口
	KEY_Init();								//初始化按键

		while(RTC_Init())
		{	//等待RTC初始化
			delay_ms(200);
			printf("rtc waiting```\r\n");
		} 
		printf("finish\n");
		display_jing();
		//初始化完成
   while(1)
	{	
		POINT_COLOR=RED;
		if(t!=calendar.sec)		//时间更新后显示新时间
		{
				t=calendar.sec;	
				LCD_ShowNum(200,135,calendar.min,2,32);		
				LCD_ShowString(230,135,200,32,32,":");			
				LCD_ShowNum(248,135,calendar.sec,2,32);
			
				Time = 60*calendar.min+calendar.sec;//比赛用时
				if(dis_pre != quanshu_tenfold)			//有位移变化
				{
					V_ave=(0.154*quanshu_tenfold)/Time;
					dis_pre = quanshu_tenfold;
					sprintf(code_ave,"%.2f",V_ave);	
					LCD_ShowString(100,200,200,32,32,code_ave);//修改一下位置
					
				}
		}
			
		sprintf(code_v,"%.2f",V);					//float 转 字符串  
		LCD_ShowString(365,275,200,32,32,code_v);		//速度
		
		sprintf(code_vr,"%d",V_RPM);					//float 转 字符串  
		LCD_ShowString(365,275,200,32,32,code_vr);		//转速
 
		sprintf(mileage,"%.2f",0.154*quanshu_tenfold);
		LCD_ShowString(250,225,200,24,32,mileage);	//里程
		
	  display_dong(V_RPM,V,50);
		delay_ms(300);
	}
 }
/**
  * @brief: 触摸屏初始化  		    
  * @retval:0 - 没有进行校准
  *         1 - 进行过校准
  * @note:
  *   - T_SCK  -> PB1
  *   - T_CS   -> PB2
  *   - T_MISO -> PF8
  *   - T_MOSI -> PF9
  *   - T_PEN  -> PF10
  */
u8 TP_Init(void)
{			    		   
	RCC->APB2ENR|=1<<3;			//PB时钟使能	   
	RCC->APB2ENR|=1<<7;			//PF时钟使能	   
 	
	GPIOB->CRL&=0XFFFFF00F;	//PB1 PB2
	GPIOB->CRL|=0X00000330; 
	GPIOB->ODR|=3<<1;				//PB1 PB2 推挽输出 	 
	GPIOF->CRH&=0XFFFFF000;
	GPIOF->CRH|=0X00000838; //PF8-上拉输入  PF9-推挽输出  PF10-上拉输入
	GPIOF->ODR|=7<<8;				//PF8 PF9 PF10 全部上拉	  
	TP_Read_XY(&tp_dev.x,&tp_dev.y);//第一次读取初始化
 	IIC_Init();							//初始化IIC
 	while(AT24CXX_Check())	//检测不到24c02
	{
		LCD_ShowString(16,150,200,16,16,"24C02 Check Failed!");
		delay_ms(500);
		LCD_ShowString(16,150,200,16,16,"Please Check!      ");
		delay_ms(500);
	}
	if(TP_Get_Adjdata())return 0;	//已经校准
	else													//未校准
	{ 										    
		LCD_Clear(WHITE);						//清屏
		TP_Adjust();								//屏幕校准 
		TP_Save_Adjdata();	 
	}
	TP_Get_Adjdata();	
	return 1; 									 
}
//硬件初始化
void borad_HarwareInit(void)
{
		//OS_ERR err;
		//CPU_SR_ALLOC();
		
		delay_init(168);  //时钟初始化
		NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断分组配置
		uart_init(115200);   //串口初始化
		
		INTX_DISABLE();		//关中断,防止滴答定时器对外设初始化的打扰
		
		LED_Init();         //LED初始化	
		LCD_Init();			//LCD初始化	
		
		POINT_COLOR = RED;
		LCD_ShowString(30,10,200,16,16,"HardWare: STM32F4");	
		LCD_ShowString(30,30,200,16,16,"SotfWareSystem:UCOSIII,FATFS");
		LCD_ShowString(30,50,200,16,16,"STM32_NC");
		LCD_ShowString(30,70,200,16,16,"HuBei University of Technology");
		LCD_ShowString(30,90,200,16,16,"2016/1/16");
		
		//SD卡初始化
		SDCard_Init();
		
		INTX_ENABLE();		//开中断
}
Exemple #6
0
void LCD_ShowLine(u8 x,u16 y, u8 *p)		 //显示一个字符串,16字体
{


	LCD_ShowString(0,y*20,"                                       ");
	LCD_ShowString(x, y*20,p);

}
Exemple #7
0
 int main(void)
 {
	u8 key;
	u8 i=0;	
	SystemInit();
	delay_init(72);	     //延时初始化
	NVIC_Configuration();
 	uart_init(9600);
 	LED_Init();
 	KEY_Init();
	LCD_Init();

	POINT_COLOR=RED;//设置字体为蓝色	   
	LCD_ShowString(60,50,"Mini STM32");	
	LCD_ShowString(60,70,"TOUCH TEST");	
	LCD_ShowString(60,90,"ATOM@ALIENTEK");
	LCD_ShowString(60,110,"2011/1/1");	
	LCD_ShowString(60,130,"Press KEY0 to Adjust");	
	Touch_Init();
	delay_ms(1500);
	Load_Drow_Dialog();	  
	while(1)
	{	
	 	key=KEY_Scan();
		if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按下
		{
			Pen_Int_Set(0);//关闭中断
			do
			{
				Convert_Pos();
				Pen_Point.Key_Sta=Key_Up;
				if(Pen_Point.X0>216&&Pen_Point.Y0<16)Load_Drow_Dialog();//清除
				else 
				{
					Draw_Big_Point(Pen_Point.X0,Pen_Point.Y0);//画图	    
					GPIOC->ODR|=1<<1;    //PC1 上拉	   
				}
			}while(PEN==0);//如果PEN一直有效,则一直执行
			Pen_Int_Set(1);//开启中断
		}else delay_ms(10);
		if(key==1)//KEY0按下,则执行校准程序
		{
			LCD_Clear(WHITE);//清屏
		    Touch_Adjust();  //屏幕校准 
			Save_Adjdata();	 
			Load_Drow_Dialog();
		}
		i++;
		if(i==20)
		{
			i=0;
			LED0=!LED0;
		}
	};	   
 }
Exemple #8
0
//显示GPS定位信息 
void Gps_Msg_Show(void)
{
 	float tp;		   
	POINT_COLOR=BLUE;  	 
	tp=gpsx.longitude;	   
	sprintf((char *)dtbuf,"Longitude:%.5f %1c   ",tp/=100000,gpsx.ewhemi);	//得到经度字符串
 	LCD_ShowString(30,130,200,16,16,dtbuf);	 	   
	tp=gpsx.latitude;	   
	sprintf((char *)dtbuf,"Latitude:%.5f %1c   ",tp/=100000,gpsx.nshemi);	//得到纬度字符串
 	LCD_ShowString(30,150,200,16,16,dtbuf);	 	 
	tp=gpsx.altitude;	   
 	sprintf((char *)dtbuf,"Altitude:%.1fm     ",tp/=10);	    			//得到高度字符串
 	LCD_ShowString(30,170,200,16,16,dtbuf);	 			   
	tp=gpsx.speed;	   
 	sprintf((char *)dtbuf,"Speed:%.3fkm/h     ",tp/=1000);		    		//得到速度字符串	 
 	LCD_ShowString(30,190,200,16,16,dtbuf);	 				    
	if(gpsx.fixmode<=3)														//定位状态
	{  
		sprintf((char *)dtbuf,"Fix Mode:%s",fixmode_tbl[gpsx.fixmode]);	
	  	LCD_ShowString(30,210,200,16,16,dtbuf);			   
	}	 	   
	sprintf((char *)dtbuf,"Valid satellite:%02d",gpsx.posslnum);	 		//用于定位的卫星数
 	LCD_ShowString(30,230,200,16,16,dtbuf);	    
	sprintf((char *)dtbuf,"Visible satellite:%02d",gpsx.svnum%100);	 		//可见卫星数
 	LCD_ShowString(30,250,200,16,16,dtbuf);		 
	sprintf((char *)dtbuf,"UTC Date:%04d/%02d/%02d   ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date);	//显示UTC日期
	//printf("year2:%d\r\n",gpsx.utc.year);
	LCD_ShowString(30,270,200,16,16,dtbuf);		    
	sprintf((char *)dtbuf,"UTC Time:%02d:%02d:%02d   ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec);	//显示UTC时间
  	LCD_ShowString(30,290,200,16,16,dtbuf);		  
}	 
Exemple #9
0
 int main(void)
 { 
	u16 i,rxlen;
	u16 lenx;
	u8 key=0XFF;
	u8 upload=0;
	delay_init();	    	 //延时函数初始化	  
	uart_init(38400);	 	//串口初始化为9600
	USART2_Init(38400);	//初始化串口2
	LED_Init();				//初始化与LED连接的硬件接口
	KEY_Init();				//初始化与LED连接的硬件接口
   LCD_Init();				//初始化LCD
 	POINT_COLOR=RED;
	LCD_ShowString(30,20,200,16,16,"ALIENTEK STM32 ^_^");	
	LCD_ShowString(30,40,200,16,16,"NE0-6M GPS TEST");	
	LCD_ShowString(30,60,200,16,16,"ATOM@ALIENTEK");
	LCD_ShowString(30,80,200,16,16,"KEY0:Upload NMEA Data SW");   	 										   	   
   	LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF");   
	if(Ublox_Cfg_Rate(1000,1)!=0)	//设置定位信息更新速度为1000ms,顺便判断GPS模块是否在位. 
	{
   		LCD_ShowString(30,120,200,16,16,"NEO-6M Setting...");
		while((Ublox_Cfg_Rate(1000,1)!=0)&&key)	//持续判断,直到可以检查到NEO-6M,且数据保存成功
		{
			USART2_Init(9600);				//初始化串口2波特率为9600(EEPROM没有保存数据的时候,波特率为9600.)
	  		Ublox_Cfg_Prt(38400);			//重新设置模块的波特率为38400
			USART2_Init(38400);				//初始化串口2波特率为38400 
			Ublox_Cfg_Tp(1000000,100000,1);	//设置PPS为1秒钟输出1次,脉冲宽度为100ms	    
			key=Ublox_Cfg_Cfg_Save();		//保存配置  
		}	  					 
	   	LCD_ShowString(30,120,200,16,16,"NEO-6M Set Done!!");
		delay_ms(500);
		LCD_Fill(30,120,30+200,120+16,WHITE);//清除显示 
	}
	while(1) 
	{		
		delay_ms(1);
		if(USART2_RX_STA&0X8000)		//接收到一次数据了
		{
			rxlen=USART2_RX_STA&0X7FFF;	//得到数据长度
			for(i=0;i<rxlen;i++)USART1_TX_BUF[i]=USART2_RX_BUF[i];	   
 			USART2_RX_STA=0;		   	//启动下一次接收
			USART1_TX_BUF[i]=0;			//自动添加结束符
			GPS_Analysis(&gpsx,(u8*)USART1_TX_BUF);//分析字符串
			Gps_Msg_Show();				//显示信息	
			if(upload)printf("\r\n%s\r\n",USART1_TX_BUF);//发送接收到的数据到串口1
 		}
		key=KEY_Scan(0);
		if(key==KEY0_PRES)
		{
			upload=!upload;
			POINT_COLOR=RED;
			if(upload)LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:ON ");
			else LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF");
 		}
		if((lenx%500)==0)LED0=!LED0; 	    				 
		lenx++;	
	}											    
}	
Exemple #10
0
//显示串口收到的数据
//comdata:要显示的数据
void com_statusBar(char * comdata){
	static u8 rec_count = 0;
	LCD_DrawRectangle(1,lcddev.height-40,lcddev.width-1,lcddev.height-1); //屏幕底部画一个矩形	
	LCD_DrawLine(1,lcddev.height-20,lcddev.width,lcddev.height-20);		//画线
	LCD_ShowString(2,lcddev.height-39,500,16,16,"Received data from srialport:"); //标题
	
	LCD_Fill(2,lcddev.height-19,lcddev.width-2,lcddev.height-2,WHITE);
	LCD_ShowString(2,lcddev.height-19,500,16,16,(u8*)comdata); //内容
	
	//状态条尾部蓝绿色闪烁:表示系统串口任务正在接收数据
	LCD_Fill(lcddev.width-19,lcddev.height-39,lcddev.width,lcddev.height-21,lcd_discolor[10-rec_count%2]); //填充状态信号
}
Exemple #11
0
//查询DATA_Msg消息队列中的总队列数量和剩余队列数量
void check_msg_queue(u8 *p)
{
	CPU_SR_ALLOC();
	u8 msgq_remain_size;	//消息队列剩余大小
	OS_CRITICAL_ENTER();	//进入临界段
	msgq_remain_size =Msgdis_TaskTCB.MsgQ.NbrEntriesSize-Msgdis_TaskTCB.MsgQ.NbrEntries;
	p = mymalloc(SRAMIN,20);	//申请内存
	sprintf((char*)p,"Total Size:%d",Msgdis_TaskTCB.MsgQ.NbrEntriesSize);	//显示DATA_Msg消息队列总的大小
	LCD_ShowString(40,190,100,16,16,p);
	sprintf((char*)p,"Remain Size:%d",msgq_remain_size);	//显示DATA_Msg剩余大小
	LCD_ShowString(40,230,100,16,16,p);
	myfree(SRAMIN,p);		//释放内存
	OS_CRITICAL_EXIT();		//退出临界段
}
Exemple #12
0
//在LCD上显示地址信息
//mode:1 显示DHCP获取到的地址
//	  其他 显示静态地址
void show_address(u8 mode)
{
	u8 buf[30];
	if(mode==1)
	{
		sprintf((char*)buf,"MAC    :%d.%d.%d.%d.%d.%d",lwipdev.mac[0],lwipdev.mac[1],lwipdev.mac[2],lwipdev.mac[3],lwipdev.mac[4],lwipdev.mac[5]);//打印MAC地址
		LCD_ShowString(30,130,210,16,16,buf); 
		sprintf((char*)buf,"DHCP IP:%d.%d.%d.%d",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);						//打印动态IP地址
		LCD_ShowString(30,150,210,16,16,buf); 
		sprintf((char*)buf,"DHCP GW:%d.%d.%d.%d",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]);	//打印网关地址
		LCD_ShowString(30,170,210,16,16,buf); 
		sprintf((char*)buf,"DHCP IP:%d.%d.%d.%d",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]);	//打印子网掩码地址
		LCD_ShowString(30,190,210,16,16,buf); 
	}
	else 
	{
		sprintf((char*)buf,"MAC      :%d.%d.%d.%d.%d.%d",lwipdev.mac[0],lwipdev.mac[1],lwipdev.mac[2],lwipdev.mac[3],lwipdev.mac[4],lwipdev.mac[5]);//打印MAC地址
		LCD_ShowString(30,130,210,16,16,buf); 
		sprintf((char*)buf,"Static IP:%d.%d.%d.%d",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);						//打印动态IP地址
		LCD_ShowString(30,150,210,16,16,buf); 
		sprintf((char*)buf,"Static GW:%d.%d.%d.%d",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]);	//打印网关地址
		LCD_ShowString(30,170,210,16,16,buf); 
		sprintf((char*)buf,"Static IP:%d.%d.%d.%d",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]);	//打印子网掩码地址
		LCD_ShowString(30,190,210,16,16,buf); 
	}	
}
Exemple #13
0
 int main(void)
 {  	
 	u32 sector_size;
	u8 t=0;	
	SystemInit();
	delay_init(72);	     //延时初始化
	NVIC_Configuration();
 	uart_init(9600);
 	LED_Init();
 	KEY_Init();
	LCD_Init();
	POINT_COLOR=RED;//设置字体为红色	   
	LCD_ShowString(60,50,"Mini STM32");	
	LCD_ShowString(60,70,"SD Card TEST");	
	LCD_ShowString(60,90,"ATOM@ALIENTEK");
	LCD_ShowString(60,110,"2011/1/1");				 
	while(SD_Initialize()!=0)//检测不到SD卡
	{
		LCD_ShowString(60,130,"SD Card Failed!");
		delay_ms(500);
		LCD_ShowString(60,130,"Please Check!      ");
		delay_ms(500);
		LED0=!LED0;//DS0闪烁
	}
	//检测SD卡成功 											    
	LCD_ShowString(60,130,"SD Card Checked OK ");
	sector_size=SD_GetSectorCount();
	printf(" SD Sector Size:%x\n",sector_size);
	LCD_ShowString(60,150,"SD Card Size:    Mb");
	LCD_ShowNum(164,150,sector_size>>12,4,16);
	while(1)
	{
		if(t==30)//每6s钟执行一次
		{
			if(SD_ReadDisk(buf,0,1)==0)//读取MBR扇区
			{	
				LCD_ShowString(60,170,"USART1 Sending Data...");
				printf("SECTOR 0 DATA:\n");
				for(sector_size=0;sector_size<512;sector_size++)printf("%x ",buf[sector_size]);//打印MBR扇区数据    	   
				printf("\nDATA ENDED\n");
				LCD_ShowString(60,170,"USART1 Send Data Over!");
			}
			t=0;
		}   
		t++;
		delay_ms(200);
		LED0=!LED0;
	}
}
Exemple #14
0
//Mini STM32开发板范例代码18
//触摸屏 实验	  
//正点原子@ALIENTEK
//技术论坛:www.openedv.com 
void Load_Drow_Dialog(void)
{
	LCD_Clear(WHITE);//清屏   
 	POINT_COLOR=BLUE;//设置字体为蓝色 
	LCD_ShowString(216,0,"RST");//显示清屏区域
  	POINT_COLOR=RED;//设置画笔蓝色 
}
Exemple #15
0
//定时器1的回调函数
void tmr1_callback(void *p_tmr,void *p_arg)
{
	u8 *pbuf;
	static u8 msg_num;
	OS_ERR err;
	pbuf = mymalloc(SRAMIN,10);	//申请10个字节
	if(pbuf)	//申请内存成功
	{
		msg_num++;
		sprintf((char*)pbuf,"ALIENTEK %d",msg_num);
		//发送消息
		OSTaskQPost((OS_TCB*	)&Msgdis_TaskTCB,	//向任务Msgdis发送消息
                    (void*		)pbuf,
                    (OS_MSG_SIZE)10,
                    (OS_OPT		)OS_OPT_POST_FIFO,
					(OS_ERR*	)&err);
		if(err != OS_ERR_NONE)
		{
			myfree(SRAMIN,pbuf);	//释放内存
			OSTmrStop(&tmr1,OS_OPT_TMR_NONE,0,&err); //停止定时器1
			tmr1sta = !tmr1sta;
			LCD_ShowString(40,150,100,16,16,"TMR1 STOP! ");
		}
	}	
}
Exemple #16
0
//加载触摸画板函数
 void Load_Drow_Dialog(void)
{   
	LCD_Fill(0, 180,240,320,WHITE); 
 	POINT_COLOR=BLUE;//设置字体为蓝色 
	LCD_ShowString(216,304,"RST");//显示清屏区域
	LCD_DrawLine(0, 158, 240, 158);
  	POINT_COLOR=RED;//设置画笔蓝色 
}
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
//		GUI_DispStringAt("HardFault_Handler",30,232);
		LCD_ShowString(30,232,200,16,16,"HardFault_Handler");
  }
}
Exemple #18
0
void SDCard_Init(void)
{
		u32 total,free;
		u8 res=0;	
		
		W25QXX_Init();				//初始化W25Q128
		my_mem_init(SRAMIN);		//初始化内部内存池 
		my_mem_init(SRAMCCM);		//初始化CCM内存池
		
		while(SD_Init())//检测不到SD卡
		{
				LCD_ShowString(30,150,200,16,16,"SD Card Error!");
				delay_ms(500);					
				LCD_ShowString(30,150,200,16,16,"Please Check! ");
				delay_ms(500);
				LED0=!LED0;//DS0闪烁
		}
		exfuns_init();							//为fatfs相关变量申请内存				 
		f_mount(fs[0],"0:",1); 					//挂载SD卡 
		res=f_mount(fs[1],"1:",1); 				//挂载FLASH.	
		if(res==0X0D)//FLASH磁盘,FAT文件系统错误,重新格式化FLASH
		{
				LCD_ShowString(30,150,200,16,16,"Flash Disk Formatting...");	//格式化FLASH
				res=f_mkfs("1:",1,4096);//格式化FLASH,1,盘符;1,不需要引导区,8个扇区为1个簇
				if(res==0)
				{
						f_setlabel((const TCHAR *)"1:ALIENTEK");	//设置Flash磁盘的名字为:ALIENTEK
						LCD_ShowString(30,150,200,16,16,"Flash Disk Format Finish");	//格式化完成
				}else LCD_ShowString(30,150,200,16,16,"Flash Disk Format Error ");	//格式化失败
				delay_ms(1000);
		}													    
		LCD_Fill(30,150,240,150+16,WHITE);		//清除显示			  
		while(exf_getfree("0",&total,&free))	//得到SD卡的总容量和剩余容量
		{
				LCD_ShowString(30,150,200,16,16,"SD Card Fatfs Error!");
				delay_ms(200);
				LCD_Fill(30,150,240,150+16,WHITE);	//清除显示			  
				delay_ms(200);
				LED0=!LED0;//DS0闪烁
		}													  			    
		POINT_COLOR=BLUE;//设置字体为蓝色	   
		LCD_ShowString(30,150,200,16,16,"FATFS OK!");	 
		LCD_ShowString(30,170,200,16,16,"SD Total Size:     MB");	 
		LCD_ShowString(30,190,200,16,16,"SD  Free Size:     MB"); 	    
		LCD_ShowNum(30+8*14,170,total>>10,5,16);				//显示SD卡总容量 MB
		LCD_ShowNum(30+8*14,190,free>>10,5,16);					//显示SD卡剩余容量 MB		

}
Exemple #19
0
//加载主界面
void ucos_load_main_ui(void)
{
	POINT_COLOR = RED;
	LCD_ShowString(10,10,200,16,16,"Explorer STM32F4");	
	LCD_ShowString(10,30,200,16,16,"UCOSIII Examp 11-2");
	LCD_ShowString(10,50,200,16,16,"Task Queue");
	LCD_ShowString(10,70,220,16,16,"KEY_UP:Tmr1");
	LCD_ShowString(10,90,200,16,16,"2015/5/20");
	
	POINT_COLOR = BLACK;
	LCD_DrawLine(0,107,239,107);		//画线
	POINT_COLOR = RED;
	LCD_ShowString(30,130,100,16,16,"tmr1 state:");
	LCD_ShowString(30,170,120,16,16,"Task_QMsg Size:");
	LCD_ShowString(30,210,120,16,16,"Task_QMsg rema:");
	LCD_ShowString(30,250,100,16,16,"Task_QMsg:");
	POINT_COLOR = BLUE;
	LCD_ShowString(40,150,100,16,16,"TMR1 STOP! ");
}
//DHCP处理任务
void lwip_dhcp_task(void *pdata)
{
	int res;
	u8 ip_buf[20]; //存放ip用于显示
	u32 ip=0,netmask=0,gw=0;
	dhcp_start(&lwip_netif);//开启DHCP 
	lwipdev.dhcpstatus=0;	//正在DHCP
	printf("正在查找DHCP服务器,请稍等...........\r\n");  
  POINT_COLOR = RED;
	LCD_ShowString(20, 80, 160, 20, 16, "DHCP configuring..."); //显示IP到屏幕上	
	while(1)
	{ 
		printf("正在获取地址...\r\n");
		ip=lwip_netif.ip_addr.addr;		//读取新IP地址
		netmask=lwip_netif.netmask.addr;//读取子网掩码
		gw=lwip_netif.gw.addr;			//读取默认网关 
		if(ip!=0)   					//当正确读取到IP地址的时候
		{
			lwipdev.dhcpstatus=2;	//DHCP成功
 			printf("网卡en的MAC地址为:................%d.%d.%d.%d.%d.%d\r\n",lwipdev.mac[0],lwipdev.mac[1],lwipdev.mac[2],lwipdev.mac[3],lwipdev.mac[4],lwipdev.mac[5]);
			//解析出通过DHCP获取到的IP地址
			lwipdev.ip[3]=(uint8_t)(ip>>24); 
			lwipdev.ip[2]=(uint8_t)(ip>>16);
			lwipdev.ip[1]=(uint8_t)(ip>>8);
			lwipdev.ip[0]=(uint8_t)(ip);
			printf("通过DHCP获取到IP地址..............%d.%d.%d.%d\r\n",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);
			sprintf((char *)ip_buf, "IP: %d.%d.%d.%d ", lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);
			POINT_COLOR = RED;
			LCD_ShowString(20, 80, 160, 20, 16, ip_buf); //显示IP到屏幕上
			//解析通过DHCP获取到的子网掩码地址
			lwipdev.netmask[3]=(uint8_t)(netmask>>24);
			lwipdev.netmask[2]=(uint8_t)(netmask>>16);
			lwipdev.netmask[1]=(uint8_t)(netmask>>8);
			lwipdev.netmask[0]=(uint8_t)(netmask);
			printf("通过DHCP获取到子网掩码............%d.%d.%d.%d\r\n",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]);
			//解析出通过DHCP获取到的默认网关
			lwipdev.gateway[3]=(uint8_t)(gw>>24);
			lwipdev.gateway[2]=(uint8_t)(gw>>16);
			lwipdev.gateway[1]=(uint8_t)(gw>>8);
			lwipdev.gateway[0]=(uint8_t)(gw);
			printf("通过DHCP获取到的默认网关..........%d.%d.%d.%d\r\n",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]);
			break;
		}else if(lwip_netif.dhcp->tries>LWIP_MAX_DHCP_TRIES) //通过DHCP服务获取IP地址失败,且超过最大尝试次数
//根据当前的日期,更新日历表.
void calendar_date_refresh(void) 
{
 	u8 weekn;   //周寄存
	u16 offx=(lcddev.width-240)/2;
 	//显示阳历年月日
	POINT_COLOR=BRED; 
	BACK_COLOR=BLACK; 
	LCD_ShowxNum(offx+5,OTHER_TOPY+9,(calendar.w_year/100)%100,2,16,0);//显示年  20/19  
	LCD_ShowxNum(offx+21,OTHER_TOPY+9,calendar.w_year%100,2,16,0);     //显示年  
	LCD_ShowString(offx+37,OTHER_TOPY+9,lcddev.width,lcddev.height,16,"-"); //"-"
	LCD_ShowxNum(offx+45,OTHER_TOPY+9,calendar.w_month,2,16,0X80);     //显示月
	LCD_ShowString(offx+61,OTHER_TOPY+9,lcddev.width,lcddev.height,16,"-"); //"-"
	LCD_ShowxNum(offx+69,OTHER_TOPY+9,calendar.w_date,2,16,0X80);      //显示日	  
	//显示周几?
	POINT_COLOR=RED;
    weekn=calendar.week;
	Show_Str(5+offx,OTHER_TOPY+35,lcddev.width,lcddev.height,(u8 *)calendar_week_table[gui_phy.language][weekn],16,0); //显示周几?	
													 
}
Exemple #22
0
void show_menu(char* path, uint8_t start, uint8_t end)
{
	uint8_t i = 0, j = 1;
	
	LCD_Fill(1, 8, 126, 126, BLACK);
	for(i=start;i<end;i++)
	{
		LCD_ShowString(10, 8*j+1, &all_file_name[i][1], BRRED, BLACK);
		j++;
	}
}
//更新字体文件,UNIGBK,GBK16一起更新
//返回值:0,更新成功;
//		 其他,错误代码.
u8 update_font()
{
    u8 *gbk16_path;
    u8 *unigbk_path;
    u8 res;
    unigbk_path=(u8*)UNIGBK_SDPATH;
    gbk16_path=(u8*)GBK16_SDPATH;

    POINT_COLOR=RED;
    LCD_ShowString(60,90,"Updating UNI2GBK.SYS");
    res=updata_fontx(unigbk_path,0);//更新UNIGBK.BIN
    if(res)return 1;
    LCD_ShowString(60,90,"Updating GBK16.FON  ");
    res=updata_fontx(gbk16_path,1);//更新GBK16.FON
    if(res)return 2;
    //全部更新好了
    res=0XAA;
    SPI_Flash_Write(&res,FONTINFOADDR+24,1);//写入字库存在标志	0XAA
    return 0;//无错误.
}
Exemple #24
0
void LCD_ShowLineEx(u16 y, u8 *p)
{
// 	16 Pixel = 1 character
	u8 tBuf[80];
 	memset(tBuf, ' ', sizeof(tBuf));
	sprintf((char *)tBuf,"%s",p);
	tBuf[strlen((char *)p)]=' ';
	tBuf[40]=0x00;

	LCD_ShowString(0,y*LN_HEIGHT,tBuf);	

}
//ALIENTEK Mini STM32开发板范例代码11
//TFTLCD显示实验   
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司 
 int main(void)
 { 
	 u8 x=0;
	u8 lcd_id[12];			//存放LCD ID字符串	
	delay_init();	    	 //延时函数初始化	  
	uart_init(9600);	 	//串口初始化为9600
	LED_Init();		  		//初始化与LED连接的硬件接口
 	LCD_Init();
	POINT_COLOR=RED; 
	sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到lcd_id数组。				 	
  	while(1) 
	{		 
		switch(x)
		{
			case 0:LCD_Clear(WHITE);break;
			case 1:LCD_Clear(BLACK);break;
			case 2:LCD_Clear(BLUE);break;
			case 3:LCD_Clear(RED);break;
			case 4:LCD_Clear(MAGENTA);break;
			case 5:LCD_Clear(GREEN);break;
			case 6:LCD_Clear(CYAN);break;

			case 7:LCD_Clear(YELLOW);break;
			case 8:LCD_Clear(BRRED);break;
			case 9:LCD_Clear(GRAY);break;
			case 10:LCD_Clear(LGRAY);break;
			case 11:LCD_Clear(BROWN);break;
		}
		POINT_COLOR=RED;	  
		LCD_ShowString(30,40,200,24,24,"Mini STM32 ^_^");	
		LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");
		LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
 		LCD_ShowString(30,110,200,16,16,lcd_id);		//显示LCD ID	      					 
		LCD_ShowString(30,130,200,12,12,"2014/3/7");	      					 
	    x++;
		if(x==12)x=0;
		LED0=!LED0;	 
		delay_ms(1000);	
	} 
}
 int main(void)
 { 
	u16 adcx;
	float temp;
	delay_init();	    	 //延时函数初始化	  
	uart_init(9600);	 	//串口初始化为9600
	LED_Init();		  		//初始化与LED连接的硬件接口
 	LCD_Init();
 	Adc_Init();		  		//ADC初始化	    
	POINT_COLOR=RED;//设置字体为红色 
	LCD_ShowString(60,50,200,16,16,"Mini STM32");	
	LCD_ShowString(60,70,200,16,16,"ADC TEST");	
	LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
	LCD_ShowString(60,110,200,16,16,"2014/3/9");	
	//显示提示信息
	POINT_COLOR=BLUE;//设置字体为蓝色
	LCD_ShowString(60,130,200,16,16,"ADC_CH1_VAL:");	      
	LCD_ShowString(60,150,200,16,16,"ADC_CH1_VOL:0.000V");	    
	while(1)
	{
		adcx=Get_Adc_Average(ADC_Channel_1,10);
		LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值
		temp=(float)adcx*(3.3/4096);
		adcx=temp;
		LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值
		temp-=adcx;
		temp*=1000;
		LCD_ShowxNum(172,150,temp,3,16,0X80);
		LED0=!LED0;
		delay_ms(250);	
	}											    
}	
//任务0
void KEY0_TASK()
{
    u8 key,mode;
    u16 t=0;
    u8 tmp_buf[33];

    u8 key_buf[33] = "key0_pres";


    LCD_Clear(WHITE);
    Show_Str(50,50,200,24,"当前任务0 :",24,0);

    NRF24L01_TX_Mode();
    mode=' ';//从空格键开始

    //
    while(1)
    {
        if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
        {
            LCD_ShowString(30,170,239,32,16,"Sended DATA:");
            LCD_ShowString(0,190,lcddev.width-1,32,16,tmp_buf);
            for(t=0; t<32; t++)
            {

                tmp_buf[t]=key_buf[t];
            }
            tmp_buf[32]=0;//加入结束符
        }
        else
        {
            LCD_Fill(0,170,lcddev.width,170+16*3,WHITE);//清空显示
            LCD_ShowString(30,170,lcddev.width-1,32,16,"Send Failed ");
        }
        LED0=!LED0;
        delay_ms(1500);
    }
}
Exemple #28
0
void ADJ_INFO_SHOW(u8*str)
{
	LCD_ShowString(40,40,"x1:       y1:       ");
	LCD_ShowString(40,60,"x2:       y2:       ");
	LCD_ShowString(40,80,"x3:       y3:       ");
	LCD_ShowString(40,100,"x4:       y4:       ");
 	LCD_ShowString(40,100,"x4:       y4:       ");
 	LCD_ShowString(40,120,str);					   
}
Exemple #29
0
 int main(void)
{	 
	u32 i;
	delay_init();	    	 	//延时函数初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	 		//串口初始化为115200
	LED_Init();		  			//初始化与LED连接的硬件接口
	KEY_Init();					//初始化按键
	LCD_Init();			   		//初始化LCD 
	TIM3_Int_Init(1000,719);	//定时器3频率为100hz
	usmart_dev.init(72);		//初始化USMART	
	FSMC_SRAM_Init();			//初始化外部SRAM	 
	my_mem_init(SRAMIN);		//初始化内部内存池
	my_mem_init(SRAMEX);		//初始化外部内存池
 	POINT_COLOR=RED;			//设置字体为红色 
	LCD_ShowString(30,30,200,16,16,"ENC28J60+STM32");	
	LCD_ShowString(30,50,200,16,16,"LWIP Test!");	
	LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");
	LCD_ShowString(30,90,200,16,16,"2015/4/27");  
	while(lwip_comm_init()) //lwip初始化
	{
		LCD_ShowString(30,110,200,20,16,"LWIP Init Falied!");
		delay_ms(1200);
		LCD_Fill(30,110,230,130,WHITE); //清除显示
		LCD_ShowString(30,110,200,16,16,"Retrying...");  
	}
	LCD_ShowString(30,110,200,20,16,"LWIP Init Success!");
 	LCD_ShowString(30,130,200,16,16,"DHCP IP configing...");
#if LWIP_DHCP   //使用DHCP
	while((lwipdev.dhcpstatus!=2)&&(lwipdev.dhcpstatus!=0XFF))//等待DHCP获取成功/超时溢出
	{
		lwip_periodic_handle();	//LWIP内核需要定时处理的函数
	}
#endif
	show_address(lwipdev.dhcpstatus);	//显示地址信息
 	while(1)
	{	
		lwip_periodic_handle();	//LWIP内核需要定时处理的函数
		i++;
		if(i==50000)
		{
			LED0=~LED0;
			i=0;
		}
	}
}
Exemple #30
0
 int main(void)
 {	
	u8 i;	
	delay_init();	    	 //延时函数初始化
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
	uart_init(9600);
	OV7670_Init();	
	LED_Init();		  		//初始化与LED连接的硬件接口
	LCD_Init();			   	//初始化LCD
	if(lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X5510||lcddev.id==0X1963) //强制设置屏幕分辨率为320*240.以支持3.5寸大屏
	{
		lcddev.width=240;
		lcddev.height=320; 
	}
	usmart_dev.init(72);	//初始化USMART	
	
 	POINT_COLOR=RED;//设置字体为红色 
	LCD_ShowString(60,50,200,200,16,"Mini STM32");	
	LCD_ShowString(60,70,200,200,16,"OV7670 TEST");	
	LCD_ShowString(60,90,200,200,16,"ATOM@ALIENTEK");
	LCD_ShowString(60,110,200,200,16,"2014/3/27");  	 
	LCD_ShowString(60,130,200,200,16,"Use USMART To Set!");	 
  	LCD_ShowString(60,150,200,200,16,"OV7670 Init...");	  
	while(OV7670_Init())//初始化OV7670
	{
		LCD_ShowString(60,150,200,200,16,"OV7670 Error!!");
		delay_ms(200);
	    LCD_Fill(60,150,239,166,WHITE);
		delay_ms(200);
	}
 	LCD_ShowString(60,150,200,200,16,"OV7670 Init OK");
	delay_ms(1500);	 	   	  
	TIM3_Int_Init(10000,7199);			//TIM3,10Khz计数频率,1秒钟中断									  
	EXTI15_Init();						//使能定时器捕获
	OV7670_Window_Set(10,174,240,320);	//设置窗口	  
  	OV7670_CS=0;						 	 
 	while(1)
	{	
 		camera_refresh();	//更新显示	 
 		if(i!=ov_frame)		//DS0闪烁.
		{
			i=ov_frame;
			LED0=!LED0;
 		}
	}	   
}