📄 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 + -