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

📄 vb6+

📁 stm32+TFT+VB上位机
💻
字号:
#include "stm32f10x.h"
#include "systick.h"
#include "GLCD.h"
#include <stdio.h>
u8 FLAG=0;
u8 iii;
u16 count=0;
u16 rgb;

u8 RGB_BUFFER[7]={1,2,3,4,5,6,7};
void USART1IRQHandle(void);
void RCC_Configuration(void);
void GPIO_Configuration(void);
void USART_Configuration(void);
void NVIC_Configuration(void);
int main(void)
{
  RCC_Configuration();	
  USART_Configuration();
  NVIC_Configuration();
  delay_init();
  LCD_Initializtion();
  LCD_Clear(Grey);
  LCD_DrawLine(8,10,8,230,Red);//画线子程序(X1,Y1,X2,Y2,COLOR)
  LCD_DrawLine(9,10,9,230,Red);//画线子程序(X1,Y1,X2,Y2,COLOR)
  LCD_DrawLine(10,10,10,230,Red);//画线子程序(X1,Y1,X2,Y2,COLOR)
  LCD_DrawLine(10,230,230,230,Blue);//画线子程序(X1,Y1,X2,Y2,COLOR)
  LCD_DrawLine(10,231,230,231,Blue);//画线子程序(X1,Y1,X2,Y2,COLOR)
  LCD_DrawLine(10,232,230,232,Blue);//画线子程序(X1,Y1,X2,Y2,COLOR)
  GUI_Text(0,0,"Y",Blue,Cyan);

  GUI_Text(230,240,"X",Blue,Grey);
  GUI_Text(31,5," The curren voltage is:",Blue,Grey);
  //GUI_Chinese(31,25,"当前输出电压为:",Green,Cyan);
  /* Infinite loop */
  
						
  
  while (1)
  {
	
	if(FLAG==1)
	{
		FLAG=0;
		
			//LCD_DrawLine(RGB_BUFFER[0],RGB_BUFFER[1],RGB_BUFFER[2],RGB_BUFFER[3],((RGB_BUFFER[4]<<8)+RGB_BUFFER[5]));

			USART_SendData(USART1,'o');
			LCD_SetPoint(((RGB_BUFFER[1]<<8)+RGB_BUFFER[0]),((RGB_BUFFER[3]<<8)+RGB_BUFFER[2]),RGB565CONVERT(RGB_BUFFER[4],RGB_BUFFER[5],RGB_BUFFER[6]));//LCD_SetPoint(uint16_t Xpos,uint16_t Ypos,uint16_t point)
			
					
		
		
	}
	else USART1IRQHandle();
	
	 
  }


}
  void RCC_Configuration()
	{	
		ErrorStatus HSEStartUpStatus;	                            //定义枚举类型变量	 HSEStartUpStatus
			RCC_DeInit();										    //复位系统时钟设置
			RCC_HSEConfig(RCC_HSE_ON);							    //开启HSE
			HSEStartUpStatus = RCC_WaitForHSEStartUp();			    //等待HSE起振 并稳定
	
			if(HSEStartUpStatus==SUCCESS)					       //如果起振成功,则进入
			{
				RCC_HCLKConfig(RCC_SYSCLK_Div1);				    // 	选择HCLK(AHB)时钟源为SYSLCK1分频
				RCC_PCLK2Config(RCC_HCLK_Div1);					    //	选择pclk2时钟源为HCLK(AHB)1分频
				RCC_PCLK1Config(RCC_HCLK_Div1);					    // 选择 pclk1时钟源为HCLK(AHB)1分频
				FLASH_SetLatency(FLASH_Latency_2);				    //  设置Flash延时周期数为2
				FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能flash 预取缓存   
				/*******选择pll时钟源为HSE 1分频,倍频数为9,则PLL=8MHZ*9=2MZH*************/
				RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);	 //
				RCC_PLLCmd(ENABLE);									 //使能PLL
				while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);	 //	等待PLL输出稳定 
				RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);			 //	 等待SYSCLK时钟源为pll
			    while(RCC_GetSYSCLKSource()!=0x08);					  // 等待PLL成为SYSCLK时钟源
			}
	
	}
   void USART_Configuration(void)
	{ 
	  GPIO_InitTypeDef GPIO_InitStructure;
	  USART_InitTypeDef USART_InitStructure; 
	
	  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE);
	  /*
	  *  USART1_TX -> PA9 , USART1_RX ->	PA10
	  */				
	  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;	         
	  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出 
	  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
	  GPIO_Init(GPIOA, &GPIO_InitStructure);		   
	
	  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;	        
	  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;// 浮空出入  
	  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
	  GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	  USART_InitStructure.USART_BaudRate = 115200;
	  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	  USART_InitStructure.USART_StopBits = USART_StopBits_1;
	  USART_InitStructure.USART_Parity = USART_Parity_No;
	  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	  USART_Init(USART1, &USART_InitStructure);
	   
	  //USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
	 // USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
	  USART_Cmd(USART1, ENABLE);
	}

   void NVIC_Configuration()
{  	/*定义NVIC初始化结构体*/
	NVIC_InitTypeDef NVIC_InitStructure;
	#ifdef VECT_TAB_RAM							  
	/*中断向量表起始地址从0x20000000开始*/
		NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);
	#else 
	/*中断向量表起始地址从0x80000000开始*/
		NVIC_SetVectorTable(NVIC_VectTab_FLASH,0X0);
	 #endif
		/*选择NVIC优先级分组2*/
		NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
		/*使能EXTI0通道,2级先占优先级,0级次占优先级*/
		NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
		NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
		NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
		NVIC_Init(&NVIC_InitStructure);
}
void USART1IRQHandle(void)
{
	

	if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET)
	{
		RGB_BUFFER[iii]=USART_ReceiveData(USART1);
		iii++;
		if(iii==7)
		{			  
			FLAG=1;
			iii=0;
			
		}
		
		
	}
}

⌨️ 快捷键说明

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