⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 STM32+Grlib
💻 C
字号:
/*
**************************************************************************
* @file    main.c
* @author  dayong 
* @version V1.0
*
* @brief   This file provides program functions.
***************************************************************************
*/
/* Includes---------------------------------*/


#include <stdio.h>

#include "stm32f10x.h"
#include "fsmc_sram.h"

#include "grlib/grlib.h"
#include "grlib/widget.h"
#include "grlib/canvas.h"
#include "grlib/pushbutton.h"

#include "lcdhal.h"
#include "touchstreen.h"
#include "usart.h"
#include "stdio.h"

typedef unsigned char tBoolean;
#define false 0
#define true  1

/**************全局变量声明*************************/
static __IO uint32_t TimingDelay;

//USART1 ************************
uint8_t TxBuffer1[];  
uint8_t RxBuffer1[],rec_f,tx_flag;
__IO uint8_t TxCounter1 = 0x00;
__IO uint8_t RxCounter1 = 0x00; 

uint32_t Rec_Len;

TOUCH_CorrectionTypeDef g_strTouchCorrectionStruct;	//触摸屏矫正量	结构体

MATRIX g_MATRIX;									// 矫正矩阵声明  结构体

unsigned char g_ucPenUpDownState;

PointTypeDef g_strDpy_Point;


//**************引用函数声明***********************
extern const tDisplay g_s240X400_SPFD5420;

/***************图形控件结构体声明***************************/
extern tCanvasWidget g_sBackground;

extern tCanvasWidget g_sHeading;

//***************添加按钮控件声明

extern tPushButtonWidget g_sPushBtn_ESC;	//Esc按钮
extern tPushButtonWidget g_sPushBtn_UP;		
extern tPushButtonWidget g_sPushBtn_DOWN;
extern tPushButtonWidget g_sPushBtn_LEFT;
extern tPushButtonWidget g_sPushBtn_RIGHT;
extern tPushButtonWidget g_sPushBtn_OK;




/****************声明按钮回调函数**************************/

void OnButtonPress(tWidget *pWidget);

/****************创建各个控件**************************/

Canvas(g_sBackground, WIDGET_ROOT, 0, &g_sHeading,
       &g_s240X400_SPFD5420, 0, 23, 230, (400 - 23),
       CANVAS_STYLE_FILL, ClrBlack, 0, 0, 0, 0, 0, 0);

Canvas(g_sHeading, &g_sBackground, &g_sPushBtn_ESC, 0,
       &g_s240X400_SPFD5420, 0, 0, 400, 23,
       (CANVAS_STYLE_FILL | CANVAS_STYLE_OUTLINE | CANVAS_STYLE_TEXT),
       ClrDarkBlue, ClrWhite, ClrWhite, &g_sFontCm20, "hello-widget", 0, 0);

//声明各按钮
RectangularButton(g_sPushBtn_ESC, &g_sBackground, &g_sPushBtn_UP, 0,
                  &g_s240X400_SPFD5420, 20, 200, 60, 40,
                  (PB_STYLE_OUTLINE | PB_STYLE_TEXT_OPAQUE | PB_STYLE_TEXT |
                   PB_STYLE_FILL | PB_STYLE_RELEASE_NOTIFY),
                   ClrDarkBlue, ClrBlue, ClrWhite, ClrWhite,
                   &g_sFontCmss22b, "Esc", 0, 0, 0, 0, 0);

RectangularButton(g_sPushBtn_UP, &g_sBackground, &g_sPushBtn_DOWN, 0,
                  &g_s240X400_SPFD5420, 80, 200, 60, 40,
                  (PB_STYLE_OUTLINE | PB_STYLE_TEXT_OPAQUE | PB_STYLE_TEXT |
                   PB_STYLE_FILL | PB_STYLE_RELEASE_NOTIFY),
                   ClrDarkBlue, ClrBlue, ClrWhite, ClrWhite,
                   &g_sFontCmss22b, "UP", 0, 0, 0, 0, 0);

RectangularButton(g_sPushBtn_DOWN, &g_sBackground, &g_sPushBtn_LEFT, 0,
                  &g_s240X400_SPFD5420, 140, 200, 60, 40,
                  (PB_STYLE_OUTLINE | PB_STYLE_TEXT_OPAQUE | PB_STYLE_TEXT |
                   PB_STYLE_FILL | PB_STYLE_RELEASE_NOTIFY),
                   ClrDarkBlue, ClrBlue, ClrWhite, ClrWhite,
                   &g_sFontCmss22b, "WN", 0, 0, 0, 0, 0);

RectangularButton(g_sPushBtn_LEFT, &g_sBackground, &g_sPushBtn_RIGHT, 0,
                  &g_s240X400_SPFD5420, 200, 200, 60, 40,
                  (PB_STYLE_OUTLINE | PB_STYLE_TEXT_OPAQUE | PB_STYLE_TEXT |
                   PB_STYLE_FILL | PB_STYLE_RELEASE_NOTIFY),
                   ClrDarkBlue, ClrBlue, ClrWhite, ClrWhite,
                   &g_sFontCmss22b, "L", 0, 0, 0, 0, 0);

RectangularButton(g_sPushBtn_RIGHT, &g_sBackground, &g_sPushBtn_OK, 0,
                  &g_s240X400_SPFD5420, 260, 200, 60, 40,
                  (PB_STYLE_OUTLINE | PB_STYLE_TEXT_OPAQUE | PB_STYLE_TEXT |
                   PB_STYLE_FILL | PB_STYLE_RELEASE_NOTIFY),
                   ClrDarkBlue, ClrBlue, ClrWhite, ClrWhite,
                   &g_sFontCmss22b, "R", 0, 0, 0, 0, 0);

RectangularButton(g_sPushBtn_OK, &g_sBackground, 0, 0,
                  &g_s240X400_SPFD5420, 320, 200, 60, 40,
                  (PB_STYLE_OUTLINE | PB_STYLE_TEXT_OPAQUE | PB_STYLE_TEXT |
                   PB_STYLE_FILL | PB_STYLE_RELEASE_NOTIFY),
                   ClrDarkBlue, ClrBlue, ClrWhite, ClrWhite,
                   &g_sFontCmss22b, "OK", 0, 0, 0, 0, 0);


/*LCD ------------------------------------------------*/



void RCC_Configuration(void)
{

	SystemInit();	
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 |RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC 
							| RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE , ENABLE);

}

/****************************************************************************
* 名    称:void GPIO_Configuration(void)
* 功    能:通用IO口配置
* 入口参数:无
* 出口参数:无
* 说    明:
* 调用方法:
****************************************************************************/

void GPIO_Configuration(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				     //状态LED1
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;			 //通用推挽输出模式
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;			 //输出模式最大速度50MHz
	GPIO_Init(GPIOB, &GPIO_InitStructure); 
	
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;				     
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;			 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;			 
	GPIO_Init(GPIOD, &GPIO_InitStructure);
	
	 

}



/****************************************************************************
* 名    称:void Delay_us(__IO uint32_t nTime)
* 功    能:定时延时程序 10us为单位
* 入口参数:无
* 出口参数:无
* 说    明:
* 调用方法:无 
****************************************************************************/  
void Delay_us(__IO uint32_t nTime)
{ 
//	TimingDelay = nTime;
	
	//while(TimingDelay != 0);
	while(nTime --);
}

/****************************************************************************
* 名    称:void TimingDelay_Decrement(void)
* 功    能:获取节拍程序
* 入口参数:无
* 出口参数:无
* 说    明:
* 调用方法:无 
****************************************************************************/  
void TimingDelay_Decrement(void)
{
	if (TimingDelay != 0x00)
	{ 
		TimingDelay--;
	}
}


extern const tDisplay g_s240X400_SPFD5420;

tContext sContext;


int main(void)
{

	tRectangle RectFillStructure;

	
	RCC_Configuration();  	       		//系统时钟初始化及端口外设时钟使能
	GPIO_Configuration();			   	//状态LED1的初始化 
	  
	USART1_IO_Configuration();			//USART1初始化
 	USART_Config(USART1);	
	USART1_NVIC_Configuration();

	XTP2046_Init();						//SPI1 触摸电路初始化
	TS_GPIO_Configuration();
	    
	FSMC_LCD_Init();				   	//FSMC TFT接口初始化 
	LCD_Init();					   		//LCD初始化代码

	GPIO_SetBits(GPIOD, GPIO_Pin_6);
	//TFT_CLEAR(0,0,240,400);          //清屏	
	
	if (SysTick_Config(720))		   //时钟节拍中断时10us一次  用于定时 
	{ 
	
		while (1);
	}



	Get_TouchCorrection(&g_strTouchCorrectionStruct); //设置参数结构体
	TS_NVIC_Configuration();


	//GrCircleFill(&sContext, 119, 199,20);





	GrContextInit(&sContext,&g_s240X400_SPFD5420);
	TouchScreenCallbackSet(WidgetPointerMessage);//安装回调函数

	WidgetAdd(WIDGET_ROOT, (tWidget *)&g_sBackground);//建立控件树

	WidgetPaint(WIDGET_ROOT); //打印控件树
							  
#if 0				  //测试用
	RectFillStructure.sXMin = 240;
	RectFillStructure.sXMax = 379;
	RectFillStructure.sYMin = 149;
	RectFillStructure.sYMax = 229;
	PixelDraw (0,10, 10, 0xffff);
	LineDrawH (0,20,200,20,0xffff);
	LineDrawV (0,60,20, 110, 0xffff);

	RectFillStructure.sXMin = 15;
	RectFillStructure.sXMax = 100;
	RectFillStructure.sYMin = 12;
	RectFillStructure.sYMax = 159;
	RectFill (0, &RectFillStructure, 0xffff);
#endif
	while (1)
	{
		WidgetMessageQueueProcess();	 //处理队列消息				
	}								 
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -