📄 aaa.c.bak
字号:
#include "Heads.h"
#define STATE_IDLE 0
#define STATE_WRITE_FINAL 1
#define STATE_SEND_ACK 2
#define STATE_WAIT_ACK 3
#define STATE_READ_ONE 4
#define STATE_READ_WAIT 5
static unsigned char g_pucData = 0;
static volatile unsigned long g_ulState = STATE_IDLE;
void I2C_IntHandler(void)
{
I2CMasterIntClear(I2C_MASTER_BASE);
switch(g_ulState)
{
case STATE_IDLE:
{
break;
}
case STATE_WRITE_FINAL:
{
I2CMasterDataPut(I2C_MASTER_BASE, g_pucData);
I2CMasterControl(I2C_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH);
g_ulState = STATE_SEND_ACK;
break;
}
case STATE_SEND_ACK:
{
I2CMasterSlaveAddrSet(I2C_MASTER_BASE, 0x32, true);
I2CMasterControl(I2C_MASTER_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE);
g_ulState = STATE_WAIT_ACK;
break;
}
case STATE_WAIT_ACK:
{
if(I2CMasterErr(I2C_MASTER_BASE) == I2C_MASTER_ERR_NONE)
{
I2CMasterDataGet(I2C_MASTER_BASE);
g_ulState = STATE_IDLE;
break;
}
}
case STATE_READ_ONE:
{
I2CMasterSlaveAddrSet(I2C_MASTER_BASE, 0x32, true);
I2CMasterControl(I2C_MASTER_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE);
g_ulState = STATE_READ_WAIT;
break;
}
case STATE_READ_WAIT:
{
g_pucData = I2CMasterDataGet(I2C_MASTER_BASE);
g_ulState = STATE_IDLE;
break;
}
}
}
void I2C_RX8025_Write(unsigned char pucData, unsigned long ulOffset)
{
g_pucData = pucData; //Send Datas
g_ulState = STATE_WRITE_FINAL;
I2CMasterSlaveAddrSet(I2C_MASTER_BASE, 0x32, false);
I2CMasterDataPut(I2C_MASTER_BASE, ulOffset);
I2CMasterControl(I2C_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_START);
while(g_ulState != STATE_IDLE)
{
}
}
void I2C_RX8025_Read(unsigned long ulOffset)
{
g_ulState = STATE_READ_ONE;
I2CMasterSlaveAddrSet(I2C_MASTER_BASE, 0x32, false);
I2CMasterDataPut(I2C_MASTER_BASE, ulOffset);
I2CMasterControl(I2C_MASTER_BASE, I2C_MASTER_CMD_SINGLE_SEND);
while(g_ulState != STATE_IDLE)
{
}
}
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
IntMasterEnable();
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_3);
// I2CMasterInitExpClk(I2C_MASTER_BASE, SysCtlClockGet(), false);
I2CMasterInit(I2C_MASTER_BASE, false); //100K
IntEnable(INT_I2C);
I2CMasterIntEnable(I2C_MASTER_BASE);
//Config RX8025 CLOCK-------------------------------------------------------------------------
I2C_RX8025_Write(0x20, 0xe0);
I2C_RX8025_Write(0x20, 0xf0);
I2C_RX8025_Write(0x00, 0x70);
I2C_RX8025_Write(0x00, 0x50);
I2C_RX8025_Write(0x08, 0x00);//sec
I2C_RX8025_Write(0x08, 0x10);//min
I2C_RX8025_Write(0x08, 0x20);//hour
I2C_RX8025_Write(0x08, 0x40);//day
I2C_RX8025_Write(0x08, 0x50);//month
I2C_RX8025_Write(0x08, 0x60);//year
while(1)
{
//Read RX8025 Clock
I2C_RX8025_Read(0x00); //Sec
// Sec = g_pucData;
I2C_RX8025_Read(0x10); //Min
// Min = g_pucData;
I2C_RX8025_Read(0x20); //Hour
// Hour = g_pucData;
I2C_RX8025_Read(0x40); //Day
// Day = g_pucData;
I2C_RX8025_Read(0x50); //Month
// Month = g_pucData;
I2C_RX8025_Read(0x60); //Year
// Year = g_pucData;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -