STM32_寄存器版本代码第二篇IIC通信端口配置

使用STM32f103C8T6配置IIC通信端口PB6/PB7

PB6-SCL(OUT)/PB7-SDA(IN/OUT)

SCL输出脉冲
SDA发送数据和接收数据

Created with Raphaël 2.2.0 配置端口 配置初始化函数IIC_GPIO_Init() 配置GPIOB时钟-APB2ENR 配置GPIOB端口配置低寄存器-CRL清零 配置GPIOB端口配置低寄存器-CRL初始化配置 配置GPIOB端端口输出数据寄存器(GPIOx_ODR) 初始化配置为高 将SCL和SDA拉高 配置端口结束

配置GPIOB时钟-APB2ENR

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
1<<3,左移三位将GPIO_B时钟置1开启时钟

配置GPIOB端口配置低寄存器-CRL清零

在这里插入图片描述
&=0x00ffffff清零
初始化函数配置端口
PB6(SCL)输出模式50Mhz/通用推挽输出
PB7(SDA)输出模式50Mhz/通用推挽输出
这里仅仅是初始化,通信过程中端口模式会发生变化,由其他函数配置
0x33000000配置
在这里插入图片描述

GPIOB端端口输出数据寄存器(GPIOx_ODR) 初始化配置为高

在这里插入图片描述
在这里插入图片描述

将SCL和SDA拉高

IIC_SCL=1;
IIC_SDA=1;
-----------------------------------
具体定义
#define IIC_SCL    PBout(6) //SCL
#define IIC_SDA    PBout(7) //SDA

IIC_GPIO.c程序

#include "IIC_GPIO.h"
/*
 *PB6-SCL(OUT)/PB7-SDA(IN/OUT)
 *	
*/
void IIC_GPIO_Init(){
	RCC->APB2ENR|=1<<3;     //使能GPIOB时钟
	GPIOB->CRL&=0x00ffffff; //PB6.7清零
	GPIOB->CRL|=0x33000000; //PB6.7推挽输出	
	GPIOB->ODR|=0x000000c0;	//PB6.7输出高
    //总线拉高
	IIC_SCL=1;
	IIC_SDA=1;
}

SDA模式配置

在通信过程中SDA是数据线要进行发送和接受,对应的GPIO口需要输出和输入两种模式
配置如下
#define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=0x80000000;}
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=0x30000000;}
与运算清零,或运算进行配置
在这里插入图片描述
在这里插入图片描述
#define READ_SDA PBin(7) //##输入SDA
在这里插入图片描述

在头文件中IIC_GPIO.h

#ifndef __IIC_GPIO_H
#define __IIC_GPIO_H
#include "sys.h"

//PB6-SCL(OUT)/PB7-SDA(IN/OUT)

#define SDA_IN()	{GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=0x80000000;}
#define SDA_OUT()	{GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=0x30000000;}

#define IIC_SCL    PBout(6) //SCL
#define IIC_SDA    PBout(7) //SDA	 
#define READ_SDA   PBin(7)  //##输入SDA 

void IIC_GPIO_Init();

#endif

IIC端口配置结束。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值