STM32 HAL I2C使用

    1、使用i2c的引脚要设置成开漏输出,以防止烧坏芯片。
    2、开漏输出可以将驱动器中的P-MOS失能,只有N-MOS工作。防止如果有两个i2c外设,一个要输出高电平,一个要输出低电平而形成短路状态。

1、驱动oled屏幕

1.1、配置

    对照原理图选择对应的i2c使能即可。在这里插入图片描述

1.2、驱动代码

    下载链接:驱动代码

1.3、应用代码

  OLED_Init();OLED_Clear();OLED_PrintString(0,0,"hello world!");

2、i2c读取mpu 6050寄存器

    我要读取mpu605的0x75寄存器,该值默认是0x68。mpu6050的7位外设地址是0x68。
    方式一:

  uint8_t val;uint8_t reg = 0x75;HAL_I2C_Master_Transmit(&hi2c1, 0x68<<1, &reg, 1, 100);HAL_I2C_Master_Receive(&hi2c1, 0x68<<1, &val, 1, 100);OLED_PrintHex(0, 4, val, 1);

    方式二:

  OLED_PrintString(0,0,"hello world");uint8_t val;HAL_I2C_Mem_Read(&hi2c1, 0x68<<1, 0x75, I2C_MEMADD_SIZE_8BIT, &val, 1,1000)OLED_PrintHex(0, 4, val, 1);

    HAL_I2C_Mem_Read是HAL_I2C_Master_Transmit和HAL_I2C_Master_Receive改进后的函数,本质没太大区别。效果如下:

在这里插入图片描述

3、中断方式

    我们只需要在上面函数后加上_IT后缀即可,比如:HAL_I2C_Mem_Read_IT

    在调用完后,i2c的读写操作就交给cpu执行,该函数会返回OK继续向下执行。需要等待中断读写完成后我们才能对数据进行操作。
读写完成时会调用CpltCallback回调函数。

/* MEM模式发送完成回调函数 */
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)
{if (hi2c == &hi2c1){g_i2c1_tx_complete = 1;}
}/* MEM模式接收完成回调函数 */
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)
{if (hi2c == &hi2c1){g_i2c1_rx_complete = 1;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/506544.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

*JAVAWEB--maven*

一:介绍: maven是一种专门管理以及构建JAVA项目的一个工具,maven屹立这么久也是因为其有三个非常好用的功能: 1.提供标准化的项目结构 比方说平时我们编写JAVA项目的时候,如果想把原本在eclipse当中编写的项目导入到IDEA当中进行使用,就会导致报错,因为这两个的项目结构并不一样…

使用最新Hal库实现USART中断收发功能(STM32F4xx)

目录 概述 1 认识STM32F4XX的USART 1.1 USART 功能说明 1.2 USART的中断 1.3 USART 模式配置 1.4 USART的寄存器 2 使用STM32CubeMX 生成工程 2.1 配置参数 2.2 生成工程代码 3 实现软件功能 3.1 软件功能介绍 3.2 认识USART Hal库 3.2.1 初始化函数组 3.2.2 发送…

解决:Information:java: javacTask: 源发行版 8 需要目标发行版 1.8

解决&#xff1a;Information:java: javacTask: 源发行版 8 需要目标发行版 1.8 先点击 Project Structure 查看jdk是否为1.8版本 我这jdk版本为1.8版本的&#xff0c;但还是运行还是报错 据以上错误显示以及上述配置&#xff0c;我选择的编译器是jdk1.8的&#xff0c;但是在i…

【Java基础系列】时间戳

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Yapi部署

【GO开发工程师】Yapi部署 推荐个人主页&#xff1a;席万里的个人空间 文章目录 【GO开发工程师】Yapi部署1、Yapi部署 1、Yapi部署 初始化yapi&#xff1a; git clone https://github.com/Ryan-Miao/docker-yapi.git cd docker-yapi docker-compose upyapi启动失败 1.cd进入…

【Scratch画图100例】图49-scratch绘制直角风车 少儿编程 scratch编程画图案例教程 考级比赛画图集训案例

目录 scratch绘制直角风车 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、实现流程 1、案例分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 …

【降维算法UMAP】调参获得更适合的低维图

目录 UMAP降维介绍 UMAP的主要步骤 1. 学习高维空间中数据点间的距离 2. 构建高维图 local_connectivity参数 n_neighbors参数 3. 构建低维图 计算最小距离 min_dist超参数 最小化成本函数 R语言中的RunUMAP函数 关键参数 Reference UMAP降维介绍 为什么要降维&am…

怎么对App进行功能测试

测试人员常被看作是bug的寻找者&#xff0c;但你曾想过他们实际是如何开展测试的吗&#xff1f;你是否好奇他们究竟都做些什么&#xff0c;以及他们如何在一个典型的技术项目中体现价值&#xff1f;本文将带你经历测试人员的思维过程&#xff0c;探讨他们测试app时的各种考虑. …

哪里下载Mac上最全面的系统清理工具,CleanMyMac X4.15中文版永久版资源啊

哪里下载Mac上最全面的系统清理工具&#xff0c;CleanMyMac X4.15中文版永久版资源啊&#xff0c;CleanMyMac X4.15中文版是一款全面的Mac系统优化工具。它能够扫描、检测并清理不需要的文件和应用程序&#xff0c;优化内存使用和磁盘空间&#xff0c;提高Mac的性能表现。此外&…

[论文笔记] Mistral论文解读

https://arxiv.org/pdf/2310.06825.pdf GQA: 1、加快推理速度 2、减小内存需求 3、允许更大的batch 4、更高的吞吐量 SWA&#xff1a; 1、较低的计算成本 更有效的处理 较长的序列。 2、感受野更符合常理。不再是全局感受野&#xff0c;而是只和前4096个进行语义融合。…

学校官网-正版Office软件安装

学校花费大价钱购买了正版软件的使用资格&#xff0c;不使用岂不是浪费我们交的学费&#xff1f; 在学校官网找到软件的下载地方 下载Office 2021 中文版&#xff1a;64位&#xff0c;微软激活客户端 在文件夹中显示如下&#xff1a; 其中nuaa.KMS.Update4.bat是激活客户端解…

通过大语言模型理解运维故障:评估和总结

张圣林 南开大学软件学院副教授、博士生导师 第六届CCF国际AIOps挑战赛程序委员会主席 在ATC、WWW、VLDB、KDD、SIGMETRICS等国际会议和JSAC、TC、TSC等国际期刊发表高水平论文50余篇。主持国家自然科学基金项目2项&#xff0c;横向项目13项&#xff08;与华为、字节跳动、腾讯…