#include "stm32f10x.h"                  // Device header
#include "USART.h" 
#include "SysTick.h"
#include "Relays.h"


void HC595_Pin_Init(void){

    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE );
    PWR_BackupAccessCmd( ENABLE );/* 允许修改RTC和后备寄存器*/
    RCC_LSEConfig( RCC_LSE_OFF ); /* 关闭外部低速时钟,PC14+PC15可以用作普通IO*/
    BKP_TamperPinCmd(DISABLE);  /* 关闭入侵检测功能,PC13可以用作普通IO*/

    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    PWR_BackupAccessCmd(DISABLE);/* 禁止修改RTC和后备寄存器*/
	  GPIO_SetBits(GPIOC,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
    //BKP_ITConfig(DISABLE);       /* 禁止TAMPER 中断*/
}

//void Relays_Init(void)
//{
//	GPIO_InitTypeDef  GPIO_InitStructure;
//	
//	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//		
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;	    		 
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
//  GPIO_Init(GPIOB, &GPIO_InitStructure);	  				 
//	
//  GPIO_ResetBits(GPIOB,GPIO_Pin_0);//接压缩机
//	delay_ms(20);
// 
////	printf("relays_init!!!\r\n");
//  				 
//}
void HC595_Send_Data(u8 data)
{
	u8 i = 0;
	
	for (i = 0; i < 8; i++)
	{
		if (data & 0x80)        //先传输高位，通过与运算判断第八是否为1
			SER = 1;    //如果第八位是1，则与 595 DS连接的引脚输出高电平
		else                    //否则输出低电平
			SER = 0;
 
		SRCLK = 0;
		delay_ms(5);
		SRCLK = 1;
		data <<= 1;
	}
}



void HC595_Send_Byte(u8 dat1)//,u8 dat2,u8 dat3,u8 dat4,u8 dat5,u8 dat6,u8 dat7,u8 dat8
{//
	
	SRCLK = 1;
	RCLK = 1;
	HC595_Send_Data(dat1);
//	HC595_Send_Data(dat2);
//	HC595_Send_Data(dat3);
//	HC595_Send_Data(dat4);
//	HC595_Send_Data(dat5);
//	HC595_Send_Data(dat6);
//	HC595_Send_Data(dat7);
//	HC595_Send_Data(dat8);
 
	RCLK = 0;
	delay_us(2);
	RCLK = 1;
	delay_us(2);
	RCLK = 0;
	
}

/*  GPIO1->PB1 GPIO2->PB0	GPIO3->PA0	GPIO4->PD1	GPIO5->PD0	GPIO6->PC13	GPIO7->PB9 GPIO8->PB8 */
//void Relays_Init(void)
//{
//	GPIO_InitTypeDef  GPIO_InitStructure;
//	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE);
//	
//  
//	
//	GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0|GPIO_Pin_15;	    		 
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
//  GPIO_Init(GPIOA, &GPIO_InitStructure);	  				
//	
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0| GPIO_Pin_1|GPIO_Pin_8| GPIO_Pin_9;	    		 
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
//  GPIO_Init(GPIOB, &GPIO_InitStructure);	  				 
//	
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;	    		 
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
//  GPIO_Init(GPIOC, &GPIO_InitStructure);
//	
//  GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_15);
//	delay_ms(20);
//  GPIO_ResetBits(GPIOB,GPIO_Pin_0| GPIO_Pin_1| GPIO_Pin_9);
//	delay_ms(20);
// 	GPIO_ResetBits(GPIOC,GPIO_Pin_13);
//	delay_ms(20);
////	printf("relays_init!!!\r\n");
//  				 
//}

//void GPIO8_Init(void)
//{
//  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//	
//  GPIO_InitTypeDef  GPIO_InitStructure;
//	
//	GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8;	    		 
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
//  GPIO_Init(GPIOB, &GPIO_InitStructure);	


//}

	
