You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.8 KiB
C

//#include "debug.h"
#include "spi.h"
#include "i2c_slave.h"
#define RVRS_Pin GPIO_Pin_3
#define SHDWN_Pin GPIO_Pin_2
#define SHDWN_AND_RVRS_Port GPIOD
u8 Data[3] = {0};
/*********************************************************************
* @fn main
*
* @brief Main program.
*
* @return none
*/
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
SystemCoreClockUpdate();
Delay_Init();
DAC_SPI_Init(); //<2F>٧ѧ<D9A7><D1A7><EFBFBD><EFBFBD>ݧߧ֧ߧڧ<DFA7> <20>ߧѧ<DFA7><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>
GPIO_InitTypeDef GPIO_InitStructure={0};
GPIO_InitStructure.GPIO_Pin = SHDWN_Pin | RVRS_Pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(SHDWN_AND_RVRS_Port, &GPIO_InitStructure);
GPIO_WriteBit(SHDWN_AND_RVRS_Port, SHDWN_Pin, Bit_SET);
I2C_Slave_Init();
u8 reverse_f=0;
u8 data_spi[3]={0};
while(1)
{
data_spi[0]=Data[2];
data_spi[1]=Data[1];
data_spi[2]=Data[0];
__NOP();
DAC_CHIP_SELECT_LOW
DAC_Transmit(SPI1,data_spi, 3);
DAC_CHIP_SELECT_HIGH
I2C_slave_rcv(I2C1, Data, 3);
if( Data[2] == 0x4 && reverse_f==0){
reverse_f = 1;
GPIO_WriteBit(SHDWN_AND_RVRS_Port, SHDWN_Pin, Bit_RESET);
Delay_Ms(100);
GPIO_WriteBit(SHDWN_AND_RVRS_Port, RVRS_Pin, Bit_SET);
Delay_Ms(1);
GPIO_WriteBit(SHDWN_AND_RVRS_Port, SHDWN_Pin, Bit_SET);
}else if (Data[2]==0 && reverse_f==1){
reverse_f = 0;
GPIO_WriteBit(SHDWN_AND_RVRS_Port, SHDWN_Pin, Bit_RESET);
Delay_Ms(100);
GPIO_WriteBit(SHDWN_AND_RVRS_Port, RVRS_Pin, Bit_RESET);
Delay_Ms(1);
GPIO_WriteBit(SHDWN_AND_RVRS_Port, SHDWN_Pin, Bit_SET);
}
}
}