最近在用st hal iic 发现 MX_I2C1_Init(); 后 iic 就处于BUSY状态

代码跟踪后发现 具体到 HAL_I2C_MspInit 中 __HAL_RCC_I2C1_CLK_ENABLE(); 后 IIC模块就处到busy状态。

具体问题找到 ,修改如下,轻松解决问题!!

原来代码:

void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{

GPIO_InitTypeDef GPIO_InitStruct;
    if(i2cHandle->Instance == I2C1)
    {
        /* USER CODE BEGIN I2C1_MspInit 0 */

/* USER CODE END I2C1_MspInit 0 */

/**I2C1 GPIO Configuration
        PB6     ------> I2C1_SCL
        PB7     ------> I2C1_SDA
        */
                
        GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
        HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
            
        /* Peripheral clock enable */
        __HAL_RCC_I2C1_CLK_ENABLE();
        /* USER CODE BEGIN I2C1_MspInit 1 */

/* USER CODE END I2C1_MspInit 1 */
    }
}

修改后代码:

void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{

GPIO_InitTypeDef GPIO_InitStruct;
    if(i2cHandle->Instance == I2C1)
    {
        /* USER CODE BEGIN I2C1_MspInit 0 */

/* USER CODE END I2C1_MspInit 0 */

/**I2C1 GPIO Configuration
        PB6     ------> I2C1_SCL
        PB7     ------> I2C1_SDA
        */
                
        /* Peripheral clock enable */
        __HAL_RCC_I2C1_CLK_ENABLE();
        /* USER CODE BEGIN I2C1_MspInit 1 */
            
                GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
        HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

/* USER CODE END I2C1_MspInit 1 */
    }
}

关于stm32 hal 库 iic 一直是 busy 问题相关推荐

  1. STM32 HAL库IIC驱动

    1. STM32上IIC的一些争议 关于STM32的IIC驱动,网上有很多争论,究竟是使用STM32自带的硬件IIC还是用IO口和软件模拟IIC呢?下面这个图形象展示了这些争论.总结一些:ST为了规避 ...

  2. linux的HAL库函数,STM32 HAL库 IIC 协议库函数

    /* 第1个参数为I2C操作句柄 第2个参数为从机设备地址 第3个参数为从机寄存器地址 第4个参数为从机寄存器地址长度 第5个参数为发送的数据的起始地址 第6个参数为传输数据的大小 第7个参数为操作超 ...

  3. stm32 hal库 AS5600磁编码器IIC通信读取角度

    stm32 hal库 AS5600磁编码器IIC通信读取角度 下载

  4. STM32 HAL 硬件IIC+DMA+简单图形库控制OLED

    目录 前言 一.建立工程 二.编写和移植 前期准备 驱动部分修改 三.使用和验证 结论 (2022年1月22日重制)本文主要是移植带简单图形库的程序,如果只是实现DMA控制,建议看[0.96寸 OLE ...

  5. 温湿度传感器驱动SHT85 单片机STM32 HAL库

    功能介绍:读取传感器SHT85数据,转换成温度.湿度 .饱和水蒸气含量. 注意事项: SDA脚设置为开漏输出,外部上拉电阻10k.或者设置成推挽,软件切换SDA输入输出. 调试时可适当加长延时时间. ...

  6. STM32 HAL库详解

    STM32 HAL库整体总结 STM32 之二 HAL库详解 及 手动移植 本篇博客是对以上参考资源的一个二次总结与整理. 1. HAL库文件结构 对于开发人员而言,首先要清楚 HAL 库的文件结构. ...

  7. STM32 HAL库 驱动 MT6701 磁编码器

    写在前面: MT6701 是 MagnTek 推出的新一代基于差分霍尔感应原理的磁性角度编码器芯片.值得一提的是 MT6701不仅提供 0~360° 的角度信号,而且还提供了一个"按压&qu ...

  8. 【春节歌曲回味 | STM32小音乐盒 】PWM+定时器驱动无源蜂鸣器(STM32 HAL库)

    l  STM32通过PWM与定时器方式控制无源蜂鸣器鸣响 l  STM32小音乐盒,歌曲进度条图形显示与百分比显示,歌曲切换 l  编程使用STM32 HAL库 l  IIC OLED界面编程,动画实 ...

  9. HIH8121(HIH8000系列)温湿度传感器驱动代码-基于STM32 HAL库

    HIH8121温湿度传感器代码基于STM32 HAL库 HIH8121传感器简介 驱动代码.c 驱动代码.h main函数 HIH8121传感器简介 HIH8121是霍尼韦尔公司生产的测量温湿度参数一 ...

最新文章

  1. 数学建模题目及论文_三道适合作为试题的数学建模题目及其评分标准
  2. GitHub的AI程序员“抄袭”算法大神代码,连原版注释都抄上了
  3. webpack 3.1 升级webpack 4.0
  4. python无法安装tensorflow_python – 无法安装Tensorflow Mac
  5. 一文弄懂神经网络中的反向传播法——BackPropagation【转】
  6. iOS开发--UITableView
  7. 20071103网工考试
  8. P3605 [USACO17JAN]Promotion Counting P(树状数组)
  9. ASP.NET MVC下的四种验证编程方式[续篇]
  10. visualvm安装插件
  11. 【转载】URL中的文本IPv6地址的格式RFC2732
  12. 正则去除包裹的大括号
  13. java string的内存模型_Java String内存模型
  14. Kubernetes入门培训(内含PPT)
  15. 深度 | 阿里新供应链体系架构解读
  16. 推广的euclid_问题引导的代数学: Euclid 空间 III
  17. apache与tomcat动静分离
  18. 小米8透明探索版无限重启,且有BootLoader锁的情况下卡刷机成功
  19. 快递查询方法一键查询物流信息
  20. python网络编程【二】(使用TCP)

热门文章

  1. 自定义是否允许文件继续执行下去
  2. 重拾IP路由选择:CCNA学习指南中的IP路由选择
  3. Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)
  4. Fragment官方解析
  5. LeetCode OJ - Copy List with Random Pointer
  6. 备忘: 网络订购烟草
  7. 贝叶斯统计:信噪对偶与Dawid定理
  8. UA MATH564 概率不等式 QE练习题
  9. UA MATH566 统计理论 Fisher信息论的性质下
  10. UA MATH565C 随机微分方程V Markov Family的特征函数