#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(10); 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); //}