74HC165A STM32代码

#74HC165A STM32代码

注意第一个数据应在CLK还没产生上升沿时读取。

#define DATA_SIZE                    (8)
#define PL_Pin(a)               	 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, (GPIO_PinState)a)
#define CLK_Pin(a)               	 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, (GPIO_PinState)a)
#define DO_Pin()               	     HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2)

uint32_t read_74hc165a_data(void)
{
  uint32_t data=0;
  uint8_t pin_res = 0;
  CLK_Pin(0);
  PL_Pin(1);
  delay_ms(1);
  uint8_t pin_sta[DATA_SIZE]={0};
  pin_res = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2)&0x01;
  data=data|pin_res;
  pin_sta[0] = pin_res; 
  for(uint8_t i=1;i<DATA_SIZE;i++)
  {
    delay_ms(1);
    CLK_Pin(1);
    delay_ms(1);
    pin_res = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2)&0x01;
    data=(data<<1)|pin_res;
    pin_sta[i] = pin_res;    
    CLK_Pin(0);    
  } 
  delay_ms(1);
  PL_Pin(0);
  printf("%d %d %d %d %d %d %d %d\r\n",pin_sta[0],pin_sta[1],pin_sta[2],pin_sta[3],pin_sta[4],pin_sta[5],pin_sta[6],pin_sta[7]);
  return data;
 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值