STM32的HAL库模拟IIC

一.代码分析

/*
*延时nus
*入口参数:
*					nus:要延时的us数
*/
void delay_us(uint32_t nus);
/*
*延时nms
*入口参数:
*					nms:要延时的ms数
*/
void delay_ms(uint32_t nms);
/*
* IIC1 GPIO 初始化
* SCL——PB6
* SDA——PB7
*/
void IIC1_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  __HAL_RCC_GPIOB_CLK_ENABLE();

	GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_PULLUP;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
	HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
	IIC1_SDA_Hi();IIC1_SCL_Hi();
}
//产生IIC起始信号
void IIC1_Start(void);
//产生IIC停止信号
void IIC1_Stop(void);
/*
*IIC发送一个字节
*返回从机有无应答
*1,有应答
*0,无应答	
*/		  
void IIC1_Send_Byte(uint8_t txd);
/*读1个字节,
*ack=1时,发送ACK,
*ack=0,发送nACK
*/   
uint8_t IIC1_Read_Byte(uint8_t ack);
/*
*等待应答信号到来
*返回值:1,接收应答失败
*        0,接收应答成功
*/
uint8_t IIC1_Wait_Ack(void);
//产生ACK应答
void IIC1_Ack(void);
//不产生ACK应答		    
void IIC1_NAck(void);

二.iic.c和iic.h文件见链接

https://download.csdn.net/download/qq_41287302/18886529

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值