STM32 学习六 串口通信2 编程仿真

一、电路


二、编程

#include "stm32f10x_lib.h"
#include <stdio.h>
void Delay_MS(u16 dly);
#define GPIOA_ODR_A  (GPIOA_BASE+0x0C)
#define GPIOA_IDR_A  (GPIOA_BASE+0x08)
#define GPIOB_ODR_A  (GPIOB_BASE+0x0C)
#define GPIOB_IDR_A  (GPIOB_BASE+0x08)
#define GPIOC_ODR_A  (GPIOC_BASE+0x0C)
#define GPIOC_IDR_A  (GPIOC_BASE+0x08)
#define GPIOD_ODR_A  (GPIOD_BASE+0x0C)
#define GPIOD_IDR_A  (GPIOD_BASE+0x08)
#define GPIOE_ODR_A  (GPIOE_BASE+0x0C)
#define GPIOE_IDR_A  (GPIOE_BASE+0x08)

#define BitBand(Addr,BitNum)    *((volatile unsigned long *)((Addr&0xF0000000)+0x2000000+((Addr&0xfffff)<<5)+(BitNum<<2)))

#define PAout(n)   BitBand(GPIOA_ODR_A,n)
#define PAin(n)    BitBand(GPIOA_IDR_A,n)
#define PBout(n)   BitBand(GPIOB_ODR_A,n)
#define PBin(n)    BitBand(GPIOB_IDR_A,n)
#define PCout(n)   BitBand(GPIOC_ODR_A,n)
#define PCin(n)    BitBand(GPIOC_IDR_A,n)
#define PDout(n)   BitBand(GPIOD_ODR_A,n)
#define PDin(n)    BitBand(GPIOD_IDR_A,n)
#define PEout(n)   BitBand(GPIOE_ODR_A,n)
#define PEin(n)    BitBand(GPIOE_IDR_A,n)


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视频教程》,感谢老师的辛勤付出。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值