#include "myiic.h"
#include "gpio.h"
#include "tim.h"
#include <stdio.h>
#include <string.h>
enum MODE{
INPUT = 0,
OUTPUT,
};
void my_delay_us(uint32_t us){
__HAL_TIM_SET_COUNTER(&htim6, 0);
while(__HAL_TIM_GET_COUNTER(&htim6) < us);
}
void myiic_set_sda_mode(uint8_t mode){
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(mode == INPUT){
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = IIC_SDA_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(IIC_SDA_GPIO_Port, &GPIO_InitStruct);
}
if(mode == OUTPUT){
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = IIC_SDA_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
HAL_GPIO_Init(IIC_SDA_GPIO_Port, &GPIO_InitStruct);
}
}
void set_sda_high(){
HAL_GPIO_WritePin(IIC_SDA_GPIO_Port, IIC_SDA_Pin, GP

该代码实现了一个IIC通信协议的底层驱动,包括起始信号、终止信号、读写操作,并提供了读写AT24C02 EEPROM的函数。AT24C02Write用于向存储器写入数据,At24c02Read用于读取数据。整个过程涉及GPIO配置、延迟函数以及应答检测。
最低0.47元/天 解锁文章
6717

被折叠的 条评论
为什么被折叠?



