初中生
最后登录1970-1-1
在线时间 小时
注册时间2015-12-28
|
各位大侠:
本人在使用74HC165D是出现数据读取失败,求各路大神指导。
问题1:级联原理是否正确?
问题2:数据读取失败错误的原因在哪?求指导!!!
void GPIO_HC165_Input(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //设置为浮空输入
GPIO_Init(GPIOC, &GPIO_InitStructure); //调用GPIO初始化函数
}
void GPIO_HC165_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //开启AFIO时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //禁止JTAG功能
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //最大输出速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //CLK
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //最大输出速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //调用GPIO初始化函数
GPIO_HC165_Input();
}
long int GetHC74165(void)
{
long int i;
long int indata=0;
GPIO_WriteBit(GPIOA,GPIO_Pin_15,Bit_RESET);//SH-0;
Delay_ms(200);
GPIO_WriteBit(GPIOA,GPIO_Pin_15,Bit_SET);//SH-1;
Delay_ms(100);
for(i=0;i<8;i++)
{
indata <<=1;
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_11))indata+=1;
GPIO_WriteBit(GPIOC,GPIO_Pin_10,Bit_RESET);//CLK-0;
Delay_ms(100);
GPIO_WriteBit(GPIOC,GPIO_Pin_10,Bit_SET);//CLK-1;
}
return indata;
}
|
-
74HC级联原理图
-
与STM32联接IO
|