当前位置: 首页 > news >正文

STM32 HAL库 硬件IIC 从机一些问题整理(转载)

一、从机双地址,在回调函数中获取主机访问的地址:

void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *I2cHandle)
{uint16_t slaveaddrcode     = I2C_GET_ADDR_MATCH(I2cHandle);printf("R:%d\r\n",slaveaddrcode);
}

  

二、如果用地址回调函数HAL_I2C_AddrCallback(),这个回调函数触发后,会关闭中断,需要再次开启中断,才能继续监听。需要特别注意开启监听中断的位置,有人在这个回调函数里直接开启,我测试了一下,不行,开启失败;还有人,把开启监听放在主循环里,一直不断轮询去开启,大力出奇迹,这样确实可以用,但是经过测试发现有时候会丢失,不能触发回调函数。直到看到这篇文章,在HAL_I2C_ListenCpltCallback()函数中开启,才是最优解。

void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)
{if(TransferDirection == I2C_DIRECTION_TRANSMIT){// if(HAL_I2C_Slave_Seq_Receive_IT(&hi2c1, i2c.RxData, sizeof(i2c.RxData), I2C_FIRST_FRAME) != HAL_OK)// {// }	  }else if(TransferDirection == I2C_DIRECTION_RECEIVE){// if(HAL_I2C_Slave_Seq_Transmit_IT(&hi2c1, i2c.TxData, sizeof(i2c.TxData), I2C_LAST_FRAME)!= HAL_OK)// {// }  }//HAL_I2C_EnableListen_IT(hi2c);//在这里启动监听会失败,没有用}

  

// 侦听完成回调函数(完成一次完整的i2c通信以后会进入该函数)
void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)
{// 完成一次通信,清除状态
//   first_byte_state = 1;
//   offset = 0;HAL_I2C_EnableListen_IT(hi2c); // slave is ready again
}

  

http://www.jsqmd.com/news/60061/

相关文章:

  • 本地人推荐的火锅,天台火锅/麻辣火锅/老火锅/市井火锅/川渝火锅约会地点推荐榜单
  • OBDSTAR P003+ Kit for DC706 Tablets: Simplify ECU, EEPROM, Flash IMMO Data Diagnostics Programming
  • 全程复盘:一次枚举值永远 Cloud2的坑——从玄学随机到只读属性
  • M726芯片
  • Fast Easy Electric Oil Siphon Pump: Professional Fluid Transfer for Cars, Motorcycles Boats
  • AutoCloseable接口 try-with-resources 、 try-catch-finally
  • 第44天(中等题 数据结构)
  • rizhi
  • element-plus el-select
  • centos6.9编译安装python37——SSL 模块缺失、GCOV 链接错误,以及 Bash 命令缓存混乱
  • 在 Windows 上本地部署 ComfyUI + zImage Turbo 模型(低显存友好)
  • sg.取消按钮焦点框
  • 代码随想录Day27_贪心1
  • Day10-20251203
  • 面向人机文明的价值协同:理论、实践与评估的完整框架
  • 251203 完成比完美重要
  • python调用大模型api来进行对话
  • 主流玩家的高端主板!七彩虹战斧B850M超级黑刃主板评测:供电散热配置豪华 性价比极佳
  • 6.4 基于线弹性断裂力学(LEFM)的断裂参数
  • expdp dmp 导出不完整导入ORA-39059 ORA-39246 故障抢救数据
  • 基于 Node.js 与 Tesseract.js 的验证码识别系统设计与实现
  • 用 Rust 和 Leptess 构建轻量级验证码识别工具
  • 12.2 HTML
  • WIN11系统环境松灵机器人SCOUT2.0底盘CAN通信控制测试
  • 软工团队作业4
  • 使用Frp+Caddy把https映射到内网的web服务
  • 刷题日记—前缀和
  • 第五十四篇
  • AI元人文:理论与技术的协同进化框架
  • 2025.12.3博客