#define EE_SCL_PIN GPIO_PIN_0 //模拟IIC的SCL信号
#define EE_SDA_PIN GPIO_PIN_1 //模拟IIC的SDA信号
#define EE_IIC_SCL(val) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, val) //SCL
#define EE_IIC_SDA(val) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, val) //SDA
uint8_t HAL_GPIO_ReadPin(uint32_t gpio_periph, uint32_t GPIO_PIN_x)
{
return gpio_input_bit_get(gpio_periph,GPIO_PIN_x);
}
unsigned char EE_READ_SDA(void)
{
return HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
}
void EE_SDA_IN(void) //配置成输入
{
rcu_periph_clock_enable(RCU_GPIOA);
gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP , GPIO_PIN_1);
}
void EE_SDA_OUT(void) //配置成输出
{
rcu_periph_clock_enable(RCU_GPIOA);
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_1);
gpio_output_options_set(GPIOA,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_1);
}
void EE_SCK_OUT(void) //配置成输出
{
rcu_periph_clock_enable(RCU_GPIOA);
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_0);
gpio_output_options_set(GPIOA,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_0);
}
/* 此函数移植 */
void HAL_GPIO_WritePin(uint32_t gpio_periph, uint32_t GPIO_PIN_x, uint32_t val)
{
if (val == 1)
gpio_bit_write(gpio_periph, GPIO_PIN_x,SET);
else
gpio_bit_write(gpio_periph, GPIO_PIN_x,RESET);
}
/******************************************************************************
*函 数:void EE_IIC_Delay(void)
*功 能:IIC延时ms
*参 数:无
*返回值:无
*备 注: 移植时只需要将EE_IIC_Delay()换成自己的延时即可
*******************************************************************************/
static void EE_IIC_Delay(int us)
{
int i;
while
GD32F130模拟IIC程序(读写功放芯片寄存器)
最新推荐文章于 2024-07-23 23:52:51 发布
该代码实现了一个基于STM32的模拟IIC通信协议,包括初始化、开始信号、停止信号、发送数据、读取数据等功能。当将GPIO_PUPD_PULLUP改为GPIO_PUPD_NONE后,读取寄存器值出现问题。

&spm=1001.2101.3001.5002&articleId=131702901&d=1&t=3&u=9871a65430e94781868b37e4d23226e5)
1188

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



