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

📄 gm8125.c

📁 GM8125芯片的驱动程序
💻 C
字号:
#include "71x_lib.h"
#include "GM8125.h"
#include "sys.h"
u16 wUART_STATUS;

u8 ConData=0xf4;
u8 *DataR;

Data_type * RecData,RecTemp;
u8 RecConData;
void Delay(u16 n)
{
		u16  i;
		
		for(i=0;i<n;i++);
	
}


void GM8125_UART0_Init()
{
	GPIO_Config(GPIO0, UART0_Tx_Pin, GPIO_AF_PP);
	GPIO_Config(GPIO0, UART0_Rx_Pin, GPIO_IN_TRI_CMOS);
	
	UART_OnOffConfig(UART0, ENABLE);		// Turn UART0 on
	UART_FifoConfig(UART0, DISABLE);		// Disable FIFOs
	UART_FifoReset(UART0, UART_RxFIFO);		// Reset the UART_RxFIFO
	UART_FifoReset(UART0, UART_TxFIFO);		// Reset the UART_TxFIFO
	UART_LoopBackConfig(UART0, DISABLE);	// Disable Loop Back
    
    UART_Config(UART0,7200, UART_NO_PARITY, UART_1_StopBits, UARTM_8D);	
	UART_RxConfig(UART0, ENABLE);          // Enable Rx
	
    EIC_IRQChannelPriorityConfig(UART0_IRQChannel,1);
    EIC_IRQChannelConfig(UART0_IRQChannel, ENABLE);
    EIC_IRQConfig(ENABLE);

    UART_ItConfig(UART0,UART_RxBufFull, ENABLE);
}


//STA_init()
void GM8125_Mutiple_Init()
{

	GPIO_Config(GPIO0, STADD0_Pin, GPIO_OUT_PP);
	GPIO_Config(GPIO0, STADD1_Pin, GPIO_OUT_PP);
	GPIO_Config(GPIO1, STADD2_Pin, GPIO_OUT_PP);
	
	GPIO_Config(GPIO1, SRADD0_Pin,GPIO_IN_TRI_CMOS);
	GPIO_Config(GPIO1, SRADD1_Pin,GPIO_IN_TRI_CMOS);
	GPIO_Config(GPIO1, SRADD2_Pin,GPIO_IN_TRI_CMOS);
	
	GPIO_Config(GPIO1, MS_Pin, GPIO_OUT_PP);	
}

void  GM8125_Single_Init()
{
	GPIO_Config(GPIO0, STADD0_Pin, GPIO_OUT_PP);
	GPIO_Config(GPIO0, STADD1_Pin, GPIO_OUT_PP);
	GPIO_Config(GPIO1, STADD2_Pin, GPIO_OUT_PP);
	
	GPIO_Config(GPIO1, SRADD0_Pin, GPIO_OUT_PP);
	GPIO_Config(GPIO1, SRADD1_Pin, GPIO_OUT_PP);
	GPIO_Config(GPIO1, SRADD2_Pin, GPIO_OUT_PP);
	
	GPIO_Config(GPIO1, MS_Pin, GPIO_OUT_PP);
}



void GM8125_TX_Config(GM_STAMode_TypeDef TXMode )
{
	switch(TXMode)
	{
			case	STA0:
					GPIO_BitWrite(GPIO0,2,0x00); 
					GPIO_BitWrite(GPIO1,3,0x00); 
					GPIO_BitWrite(GPIO1,4,0x00); 
					break;
					
			case	STA1:
					GPIO_BitWrite(GPIO0,2,0x01); 
					GPIO_BitWrite(GPIO1,3,0x00); 
					GPIO_BitWrite(GPIO1,4,0x00); 
					break;
					
			case	STA2:
					GPIO_BitWrite(GPIO0,2,0x00); 
					GPIO_BitWrite(GPIO1,3,0x01); 
					GPIO_BitWrite(GPIO1,4,0x00); 
					break;
					
			case	STA3:
					GPIO_BitWrite(GPIO0,2,0x01); 
					GPIO_BitWrite(GPIO1,3,0x01); 
					GPIO_BitWrite(GPIO1,4,0x00); 
					break;
									
			case	STA4:
					GPIO_BitWrite(GPIO0,2,0x00); 
					GPIO_BitWrite(GPIO1,3,0x00); 
					GPIO_BitWrite(GPIO1,4,0x01);
					break;
					 
			case	STA5:
					GPIO_BitWrite(GPIO0,2,0x01); 
					GPIO_BitWrite(GPIO1,3,0x00); 
					GPIO_BitWrite(GPIO1,4,0x01); 
					break;
			
	}
		
}

void GM8125_RX_Config(GM_SRAMode_TypeDef RXMode )
{
	switch(RXMode)
	{
			case	SRA0:
					GPIO_BitWrite(GPIO1,5,0x00); 
					GPIO_BitWrite(GPIO1,7,0x00); 
					GPIO_BitWrite(GPIO1,6,0x00); 
					break;
					
			case	SRA1:
					GPIO_BitWrite(GPIO1,5,0x01); 
					GPIO_BitWrite(GPIO1,7,0x00); 
					GPIO_BitWrite(GPIO1,6,0x00);  
					break;
					
			case	SRA2:
					GPIO_BitWrite(GPIO1,5,0x00); 
					GPIO_BitWrite(GPIO1,7,0x01); 
					GPIO_BitWrite(GPIO1,6,0x00);  
					break;
					
			case	SRA3:
					GPIO_BitWrite(GPIO1,5,0x01); 
					GPIO_BitWrite(GPIO1,7,0x01); 
					GPIO_BitWrite(GPIO1,6,0x00); 
					break;
					 				
			case	SRA4:
					GPIO_BitWrite(GPIO1,5,0x00); 
					GPIO_BitWrite(GPIO1,7,0x00); 
					GPIO_BitWrite(GPIO1,6,0x01); 
					break; 
					
			case	SRA5:
					GPIO_BitWrite(GPIO1,5,0x01); 
					GPIO_BitWrite(GPIO1,7,0x00); 
					GPIO_BitWrite(GPIO1,6,0x01);  
					break;
			
	}
		
}

void GM8125_Mode_Config(GM_Mode_TypeDef MS)
{
	switch(MS)
	{
		case Single:
			GPIO_BitWrite(GPIO1,15,0x01);
			break;
		
		case Mutiple:
			GPIO_BitWrite(GPIO1,15,0x00);
			break;	
	}
	
}

void  GM8125_Data8_Send(GM_STAMode_TypeDef STADD,u8 Data)
{
	   GM8125_TX_Config(STADD);
	    
		UART_ByteSend(UART0, &Data);//sends a string to UART0		
		while(!(UART_FlagStatus(UART0) & UART_TxEmpty));	
}



/*u8  GM8125_Data8_Receive(GM_SRAMode_TypeDef  SRADD)
{
	   u8 i;
	  
	    u8 *DataR;
	
		while(!(UART_FlagStatus(UART0) & UART_RxBufFull));
      wUART_STATUS=UART_ByteReceive(UART0,DataR,0xff);
      i=GM8125_RxRead();
      
      if(i==SRADD)
      
     return *DataR;   
}
*/

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
void GM8125_Init(u8 mode)
{		
	GM8125_UART0_Init();
	
	if(mode==Mutiple)
	{
	  GM8125_Mutiple_Init();	
//----------写入的命令字并读-------------------------------------------------- 	  	
  	GM8125_Mode_Config(Mutiple);  
  		
   	GM8125_Data8_Send(STA0,ConData);
   		
   	Delay(0xffff);  	
   	
  	GM8125_Mode_Config(Single); 
  
    Delay(0xffff);
//-----------验证写入的命令字是否正确,不正确则重新写---------------------------
    while(RecConData!=ConData)
    {
      GM8125_Mode_Config(Mutiple);     //MS_Pin 	
  	 
  	  GM8125_Data8_Send(STA0,ConData);	
 	      
  	   Delay(0xffff);	
  	  
      GM8125_Mode_Config(Single);   
      
      Delay(0xffff);
    }
    
	 UART_Config(UART0, 115200, UART_NO_PARITY, UART_1_StopBits, UARTM_8D);
   }
	
	
	
	else 
	{
	  //GM8125_Mode_Config(Single);
	  GM8125_Single_Init();
	}
	
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////






⌨️ 快捷键说明

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