正点原子hal库模拟iic中涉及到
#define SDA_IN() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;} //PB9 输入模式

#define SDA_OUT() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=1<<9*2;} //PB9 输出模式

stm32中文参考手册中I/O 端口控制寄存器的解释如下:

每个 GPIO 有 4 个 32 位存储器映射的控制寄存器( GPIOx_MODER、 GPIOx_OTYPER、GPIOx_OSPEEDR、 GPIOx_PUPDR),可配置多达 16 个 I/O。 GPIOx_MODER 寄存器用于选择 I/O 方向(输入、输出、 AF、模拟)。 GPIOx_OTYPER 和 GPIOx_OSPEEDR 寄存器分别用于选择输出类型(推挽或开漏)和速度 (无论采用哪种 I/O 方向,都会直接将 I/O 速度引脚连接到相应的 GPIOx_OSPEEDR 寄存器位)。无论采用哪种 I/O 方向, GPIOx_PUPDR 寄存器都用于选择上拉/下拉。

GPIO 端口模式寄存器 (GPIOx_MODER) (x = A…I)如下图

可通过软件的方式修改寄存器的值,来决定I/O的方向。

前部分GPIOB->MODER&=~(3<<(9*2)); 是将十进制的3(二进制是11)左移(9*2)个位,也就是将18,19位置置为11,然后取反变为00,再和GPIOB->MODER与运算,此时GPIOB->MODER的18,19位变为00。第一句也就是将GPIOB->MODER的18,19位置0.此时PB9为输入模式
后部分GPIOB->MODER|=0<<9*2GPIOB->MODER|=1<<9*2也就是根据参考手册的输入输出给这两个位置赋值,过程和上面是一样的。

还有一种标准库的方法寄存器操作端口模式#define SDA_IN() /#define SDA_OUT()(正点STM32-IIC实验)

正点原子stm32中hal库iic模拟`#define SDA_IN() {GPIOB->MODER=~(3<<(9*2));GPIOB->MODER|=0<<9*2;}` //PB9 输入模式相关推荐

  1. 正点原子STM32(基于HAL库)3

    目录 高级定时器实验 高级定时器简介 高级定时器输出指定个数PWM 实验 高级定时器输出指定个数PWM原理 TIM1/TIM8 寄存器 硬件设计 课堂源码(输出指定个数PWM灯就闪几次) 程序设计 下 ...

  2. 正点原子STM32(基于HAL库)5

    目录 SRAM 实验 存储器简介 SRAM 方案简介 硬件设计 程序设计 程序流程图 程序解析 下载验证 内存管理实验 内存管理简介 硬件设计 程序设计 程序流程图 程序解析 下载验证 SD 卡实验 ...

  3. 正点原子STM32(基于HAL库)0

    目录 开发环境搭建与使用 常用开发工具简介 MDK 安装 仿真器驱动安装 CH340 USB 虚拟串口驱动安装 使用MDK5 编译例程 使用串口下载程序 使用DAP 下载与调试程序 使用DAP 下载程 ...

  4. 正点原子STM32(基于HAL库)4

    目录 ADC 实验 ADC 简介 单通道ADC 采集实验 ADC 寄存器 硬件设计 程序设计 下载验证 单通道ADC 采集(DMA 读取)实验 ADC & DMA 寄存器 硬件设计 程序设计 ...

  5. STM32中HAL库与标准库的区别

    这是扒的某网站上大佬们的见解. 1.HAL库就是封装的比较猛,移植性比较强,标准库就是将寄存器封装好,移植性没有HAL好. 2.HAL库可以用ST的软件CUBE生成初始化工程.3.HAL库最方便的就是 ...

  6. THWATCH-01 陀螺仪 MPU6050 HAL库 正点原子 STM32驱动 计步

    THWATCH-01 陀螺仪 MPU6050 HAL库 正点原子 STM32驱动 计步 一级目录 二级目录 三级目录 一.cubemx配置 1.使用cubemx配置串口 2.配置IIC1 3.配置时钟 ...

  7. 【正点原子STM32连载】第四十二章 FLASH模拟EEPROM实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  8. 【STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在之前的标准库中,STM32的硬件IIC非常复杂,更重要的是它并不稳定,所以都不推荐使用. 但是 ...

  9. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 本文 1首先讲解什么是FMC及SDRAM,W9825G6KH芯片原理,2基于CubeMx创建工程 ...

最新文章

  1. 在CentOS 6.2上搭建vim开发环境
  2. 使用editcap命令将ERF格式转换为pcap格式
  3. Linux Sed命令具体解释+怎样替换换行符quot;\nquot;(非常多面试问道)
  4. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.15. JSON 函数和操作符...
  5. c将字符串拆分,并存入结构体
  6. 红帽系列linux自行配置本地yum源
  7. 第68节:Java中的MYSQL运用从小白到大牛
  8. 1.6 logistic回归的keras实现
  9. Transformer入门Transformer和CNN之间的区别
  10. LeetCode-21. 合并两个有序链表_JavaScript
  11. 人脸服务器如何与门禁系统对接,人脸识别终端门禁系统解决方案
  12. 股票经典书籍推荐(豪华版)
  13. linux cad 安装教程视频,在Deepin Linux系统中安装Freecad后再安装assembly2插件的方法...
  14. 在北京注册科技类公司的经历(一):名称预审
  15. 房产中介 二手房中介小程序 一流开发 抓住小程序热潮
  16. 两步实现安卓手机秒变网络摄像头
  17. 计算机页面里的坚果云删不了怎么回事,我的坚果云文件夹为什么无法删除
  18. 网络安全进阶篇之免杀(十四章-7)C#加载器过360
  19. 抖音上超火的3D立体动态相册表白特效(29)
  20. VC 不愿承认的 4 个暗黑事实

热门文章

  1. linux上如何分辨一个二进制可执行文件是debug还是release的
  2. Fedora 14安装永中office 2012
  3. 专注的力量:才艺双收的高智商女星
  4. 站长号论坛基本行为准则
  5. 【规则引擎】一、规则引擎简介
  6. 在word页眉中显示当前页和总页数
  7. Chrome的network过滤(Filter)技巧
  8. 软件工程理论与实践——吕云翔 课后习题第三章答案
  9. AEEEIYGEFEAKKKK|168202-45-7
  10. js 判断ie浏览器版本代码