一、电路
二、编程
void Delay_MS(u16 dly);
int main(void)
{
//STM32 -- 74LS164
//PA.0 -- AB
//PA.1 -- CLOCK
//PB.0 -- clear
//目的:74LS164 QA~QH 输出 :1100 0100
u8 data,i;
PBout(0) = 1; //高电平有效
data = 0xC4; //1100 0100
//步骤
//1.设置引脚:PA.0 输出,PA.1、PB.0 推挽输出
GPIOA->CRL = 0x33; //GPIOA 0,1 脚设置为推挽输出
GPIOB->CRL = 0x3; //GPIOB 0 脚设置为推挽输出
//2.通信 QA~QH=1100 0100
// 如传递首位0,设置PA.0 = 0 PA.1上升沿,
/* 传一位的方法
PAout(1)=0;
PAout(0)=0;
PAout(1)=1; //上升沿
Delay_MS(1);
*/
for(i=0;i<8;i++){
PAout(1)=0;
Delay_MS(1);
if((data&0x01)==0x01) PAout(0) = 1;
else PAout(0)= 0;
PAout(0)=0;
PAout(1)=1;
Delay_MS(1);
data=data>>1;
}
return (1);
}
/*******************************************************************************
* Function Name : Delay_Ms
* Description : delay 1 ms.
* Input : dly (ms)
* Output : None
* Return : None
*******************************************************************************/
void Delay_MS(u16 dly)
{
u16 i,j;
for(i=0;i<dly;i++)
for(j=1000;j>0;j--);
}
打开Logic Analyzer查看结果:
本文参考学习的是《刘凯老师STM32视频教程》,感谢老师的辛勤付出。