IIC读取:SDA_in SDA_out寄存器设置

2023-05-16

IIC读取语句里的语句:
uchar DAC5571_check(void)
{
        uchar slaveack;
        SDA_in;                       
        SCL_H;                     
        I2C_delay();                  
        slaveack = SDA_read ;         
        SCL_L;                     
        I2C_delay();                  
        SDA_out;                    
        if(slaveack)    return 0;       
        else            return 1;  
}    
其中的两条语句的解析:
#define SDA_in  {GPIOB->MODER&=~(3<<(11*2));GPIOB->MODER|=0<<11*2;}    
#define SDA_out {GPIOB->MODER&=~(3<<(11*2));GPIOB->MODER|=1<<11*2;}

语句的意思是:~(3<<(11*2)) :相当于11左移22位,也就是22和23位都是1,再取反就是00,GPIOB->MODER和22、23位(00)取与运算,则为00,同理00左移22位再和GPIOB->MODER取或运算(不变);
对应下表的指示00代表 输入复位状态。
#define SDA_out {GPIOB->MODER&=~(3<<(11*2));GPIOB->MODER|=1<<11*2;}
前面的一句和上面的分析一样不变,关键是后一句GPIOB->MODER|=1<<11*2,01左移22位,表示22为1,23位为0,再取或则22位为1,23位保持不变即是为0;显然对应下面的通用输出模式。
因为我们的器件作为从机 要读取从机的地址故数据方向为从机到MCU的传输,所以IO口作为输入,同时用完以后恢复输出模式。
寄存器在STM32F4中文参考手册里的定义是:


————————————————
版权声明:本文为CSDN博主「heda3」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/heda3/article/details/80587655

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IIC读取:SDA_in SDA_out寄存器设置 的相关文章

随机推荐

  • Ubuntu 查看文件或文件夹大小

    查看当前文件夹总量 du span class token operator span sh 查看当前文件夹的大小 du span class token operator span h span class token operator
  • matlab table型数据的导入&使用

    举个例子看看 xff1a 有一个文本数据如下 xff1a 第一行内容视为列名称 T 61 readtable 39 csv table txt 39 访问其中的内容 LastName 61 T LastName 数据部分 data part
  • ESP8266-NodeMCU (2) ArduinoIDE

    目录 1 下载与安装 2 软件设置 2 1 初始设置 2 2 下载开发板对应型号的开发插件 3 开发板测试 当开发板 ESP8266 NodeMCU 与电脑建立连接后 就要往开发板中写入程序了 此时就需要使用到ArduinoIDE软件 1
  • 选择排序算法详解之C语言版

    一 算法原理 选择排序属于不稳定排序法 xff0c 是一种常用的排序算法 xff0c 其时间复杂度为O n 2 所谓的不稳定排序算法是指在一组数据中存在多个相同的数据 xff0c 但是在排序之后 xff0c 相同数据的前后位置会发生改变 例
  • 冒泡排序算法详解之C语言版

    一 算法原理 冒泡排序是一种常用的排序算法 xff0c 属于稳定排序法 xff0c 其时间复杂度为O n 2 冒泡排序法的原理就是从前向后依次比较相邻两个元素的大小 xff0c 大元素后沉 xff0c 类似于水中的泡泡逐步上浮的过程 xff
  • 9月14日更新的sublime激活码

    分享一枚 9月14日更新的sublime激活码 亲测可用 BEGIN LICENSE TwitterInc 200 User License EA7E 890007 1D77F72E 390CDD93 4DCBA022 FAF60790 6
  • 环信为自己的app加入即时通信功能的流程

    1 在环信官网上注册账号 xff0c 创建自己的app xff0c 生成app的key 2 下载环信的SDK开发包 xff0c 并导入到自己的app中并在自己的app的AndroidManifest xml文件中加入步骤1中的key xff
  • sublime text3的破解和使用

    个人博客 xff1a ZJBLOG 之所以想用这个是因为最近在学Python不知道用啥ide好 xff0c 看同事说这个不错就了解了下 xff0c 已经有的notepad 43 43 感觉不太好编程吧 xff0c 做记事本就行了 xff0c
  • 阿里云盘使用教程

    阿里云盘 阿里云盘是阿里巴巴全球技术团队打造的一款 个人网盘 xff0c 有下载不限速 不打扰 够安全 易于分享等特点 xff0c 是一款为PC端用户提供云端存储 数据备份及智能相册等服务的网盘产品 阿里云盘官网 阿里云盘官网 https
  • 动态链接库的生成和使用,从入门到精通

    1 动态链接库和静态链接库的区别 静态链接库 LIB 由函数和数据编译而成的一个二进制文件 使用时 xff0c 在编译链接阶段 xff0c 由链接器从库中复制这些函数和数据 xff0c 并把他们与应用程序的其他模块组合起来创建最终的可执行文
  • 【java学习】数据类型

    1 xff0c 好的编码习惯 用Integer valueOf 替代new Integer xff1b Double同理 xff1b java9已经取消了new Integer xff0c 因为效率低 数字字面量里使用下划线以方便阅读 ja
  • QPushButton的四态样式

    QPushButton的四种状态 xff1a normal hover press disabled 代码 xff1a ui gt pushButton OK gt setStyleSheet 34 QPushButton border 0
  • 解决Vue报错:This dependency was not found

    错误发生场景 xff1a 也是在其他小伙伴发出的问题 xff0c 我也试了一下 xff0c 果然是这样 ERROR Failed to compile with 1 error This dependency was not found v
  • python 如何将收到的字符串中的编码部分显示为中文

    收到一个字符串 xff0c 中间的中文是以UTF 8编码形式传过来的 xff0c 收到的数据是这样的 xff1a 34 info 34 34 u767b u5f55 u6210 u529f 34 34 status 34 1 34 url
  • C语言printf输出百分号

    在C语言中 xff0c 如何输出百分号呢 xff1f 很简单 xff0c 只要在格式控制符里输入2个 就可以了 xff0c 例如 xff1a include lt stdio h gt int main int a 61 90 printf
  • 跟我一起学【MySql】之——MySql关键字

    下面列出MySQL所有关键字 xff0c 希望给使用MySQL的朋友提供一些参考帮助 ADDALLALTERANALYZEANDASASCASENSITIVEBEFOREBETWEENBIGINTBINARYBLOBBOTHBYCALLCA
  • 跟我一起学【数据仓库】之——需要避免的维度建模错误

    1 在事实表中放入文本属性 2 限制使用冗长的描述符以节省空间 3 将层次 xff08 级联的多对一关系序列 xff09 划分为多个维度 4 忽略跟踪维度的变化 合理运用缓慢变化维度的类型 xff0c 或者微型维度 5 使用更多的硬件解决遇
  • 跟我一起学【Powerdesigner】之——导入EXCEL生成逻辑模型

    表结构如图 xff1a 中文表名 英文表名 字段编码 字段名称 字段注释 字段类型 是否主键 是否可空 主键是否自增 user1 用户信息表1 id id id int 10 Y Y Y user1 用户信息表1 name 用户名 用户名
  • SELECT语句中的for update的用法(锁的运用)

    回复1 xff1a 一般FOR UPDATE用在PL SQL的游标里 xff0c 它的作用就是一个行级锁 xff08 对游标里所有的记录 xff09 xff0c 如果其他进程要更新这个游标行级锁里的记录 xff0c 就必须等待当前进程的CO
  • IIC读取:SDA_in SDA_out寄存器设置

    IIC读取语句里的语句 xff1a uchar DAC5571 check void uchar slaveack SDA in SCL H I2C delay slaveack 61 SDA read SCL L I2C delay SD