void _74HC595IOIinit()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin =RCLK_Pin ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //复用推挽输出
GPIO_Init(RCLK_GPIO, &GPIO_InitStructure); //
GPIO_InitStructure.GPIO_Pin = SRCLK_Pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //复用推挽输出
GPIO_Init(SRCLK_GPIO, &GPIO_InitStructure); //
GPIO_InitStructure.GPIO_Pin = SERDAT_Pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //复用推挽输出
GPIO_Init(SERDAT_GPIO, &GPIO_InitStructure); //
RCLK = 0;
SRCLK = 0;
SERDAT = 0;
}
void _74HC595Out(unsigned char dat)
{
RCLK = 0;
for(unsigned char i = 0 ; i<8;i++)
{
SRCLK = 0;
SERDAT = (dat>>i)&0x01?1:0;
SRCLK = 1;
}
RCLK = 1;
}