
使用两个板子,在例程I2C_TwoBoards_RestartComIT代码上进行修改: 主机调用HAL_I2C_Mem_Read_IT函数,发送内存地址16位后读10个数据; 从机调用HAL_I2C_Slave_Seq_Receive_IT接收内存地址后再调用HAL_I2C_Slave_Seq_Transmit_IT发送10个数据; 现象: 从机正常接收,给主机发送第1个数据正常,到第2~10个数据时每次第八个时钟拉低了500多个ms才拉高,也就是延时了500多ms才回ack。不知道什么原因? 现在把HAL_I2C_Mem_Read_IT替换成查询模式HAL_I2C_Mem_Read,就没有以上时钟被拉低很久的现象。 这说明HAL_I2C_Mem_Read_IT函数封装哪里有问题?求指导 主机调用代码:
从机调用代码:
从机回调函数:
|
STM32G070RET6,中断优先级配置没有效果
1
STM32G070 UART串口,低波特率传送数据时,TIMER出现严重延时现象,如何解决?
STM32G070 UART串口,低波特率传送数据时,TIMER出现严重延时现象是,如何解决?
STM32G030F6P6写FLASH最后8字节出错
stm32的同一个定时器,不同的通道,可以不同时的输出pwm波形吗
STM32G0 STL 自检库 问题咨询
基于STM32的锂动力电池检测装置的设计
STM32的低功耗模式
哪里能下载ST官方展示的NUCLEO-G071RB配合X-NUCLEO-GFX01M1运行TouchGFX案例的源程序?
注意到代码又改变了~~
库里面有个例程,可以参考一下。
STM32Cube_FW_G0_V1.5.0\Projects\STM32G081B-EVAL\Examples\I2C\I2C_TwoBoards_ComIT\
已经找到原因,对比更新最新的G0代码时漏了开接收中断。
HAL_I2C_Mem_Read_IT函数最后调用I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
在I2C_Mem_ISR_IT里检测TC标志的地方需调用I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
主机没开接收中断,没有读RXDR就会拉低时钟线