移植MPU6050时与CRH和CRL寄存器相关的问题
暑假在根据例程对单片机与MPU6050进行通信的代码进行更改引脚时遇到一些问题,后来发现是控制IO工作模式的寄存器代码没有修改正确,下面是对CRH和CRL寄存器进行更改的方法。
//IO方向设置
#define MPU_SDA_IN() {GPIOB->CRH&=0XFFF0FFFF;GPIOB->CRH|=8<<4*4;}
#define MPU_SDA_OUT() {GPIOB->CRH&=0XFFF0FFFF;GPIOB->CRH|=3<<4*4;
这是单片机与MPU6050通过IIC进行通信时对SDA引脚进行IO输入输出设置,其中SDA引脚用的STM32的PB12。
GPIOB->CRH和GPIOB->CRL是2个控制IO模式的32位寄存器。其中CRL对应引脚的0-7引脚,CRH对应引脚的8-15引脚。所以每个引脚的模式通过四个bit位进行控制,详细的控制模式可以参考下图,这是我从STM32F10X参考手册上截的与CRH相关的图,CRL与其基本相同,只是控制的引脚不同。
GPIOB->CRH&=0XFFF0FFFF;GPIOB->CRH|=8<<4*4; 的意思是先将PB12对应的四个位置0,其他GPIO设置保持不变,得0000, 然后将8对应的二进制数1000左移16位, 得1000,就是将CRH的19到16位置为1000,通过上图可知1000配置为上拉/下拉输入模式。
GPIOB->CRH&=0XFFF0FFFF;GPIOB->CRH|=3<<4*4; 的意思是先将PB12对应的四个位置0,其他GPIO设置保持不变,得0000, 然后将3对应的二进制数0011左移16位, 得0011,就是将CRH的19到16位置为0011,通过上图可知0011配置为推挽输出模式,最大速度50MHz。
对于CRH,左移的位数为引脚对应数值减去八再乘以四,如PB12为(12-8)*4。同理,在对PB0到PB7引脚进行配置时只要将CRH改为CRL,左移位数为引脚对应数值乘以4,如PB6为6*4。
移植MPU6050时与CRH和CRL寄存器相关的问题相关推荐
- crh寄存器_关于CRH、CRL、ODR和IDR寄存器的使用总结
关于 CRH . CRL . ODR 和 IDR 寄存器的使用总结 一. CRH 和 CRL 的使用: CRH 和 CRL 的使用基本相同, CRH 用于控制 GPIOX ( X 表示 A---G ) ...
- crh寄存器_STM32的CRH、CRL、ODR和IDR寄存器的使用总结
一.下载: STM32F103中文参考手册 二.CRH和CRL的介绍: CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制 ...
- 4.CRH寄存器和CRL寄存器
#define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=8<<28;}//GPIOB7,上拉/下拉输入 #define ...
- STM32的CRH、CRL、ODR和IDR寄存器的使用总结
STM32的CRH.CRL.ODR和IDR寄存器的使用总结 一.下载: STM32F103中文参考手册 百度网盘:链接:百度网盘 请输入提取码 密码:lwcg 二.CRH和CRL的介绍: CRH和CR ...
- 关于CRH、CRL、ODR和IDR寄存器的使用总结
关于CRH.CRL.ODR和IDR寄存器的使用总结 一.CRH和CRL的使用: CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL ...
- MPU6050使用/正点原子代码移植/MPU6050注意事项/关于几个频率的解释/STM32F103
关于MPU6050 MPU6050简单介绍 对于各位接触到MPU6050的同学们来说,应该不缺MPU6050的参考资料, 其中有一篇<MPU-6000 / MPU-6050 产品说明书>- ...
- CRH、CRL、ODR和IDR的使用
STM32的每个I/O口都由7个寄存器控制:2个32位端口配置寄存器CRL和CRH;2个32位的数据寄存器IDR和ODR:1个32位的置位复位寄存器BSRR:1个16位的复位寄存器BRR:1个32位的 ...
- STM32 CRH和CRL设置方向
STM32 CRH和CRL设置方向 在进行IO口方向设置的时候经常见到如下设置方式 //IO方向设置 PC11 #define MPU_SDA_IN() {GPIOC->CRH&=0XF ...
- STM32 CRH和CRL记录
在进行IO口方向设置的时候经常见到如下设置方式 //IO方向设置 PC11 #define MPU_SDA_IN() {GPIOC->CRH&=0XFFFF0FFF;GPIOC-> ...
最新文章
- 互联网轻量级框架SSM-查缺补漏第二天
- 驱动人生(离线网卡版)_驱动人生8.0版正式发布,最新功能速看
- 套接字编程(VC_Win32)
- C++ Primer 5th笔记(chap 13 拷贝控制)交换操作
- YUV 后面数字的含义_高速公路标示牌上的字母和数字,到底什么意思?很多人都不知道...
- #pragma pack(push,1) #pragma pack(pop)
- 2019 微软Build大会预告:值得开发者期待的是哪些?
- Android SQLite详解
- select 查询例子集
- 第39天-进程 _1(2013.09.11)
- opencv在linux设置环境变量,linux下设置opencv环境变量
- 从零实现深度学习框架——自动求导神器计算图
- 《Python算法教程_中文版》pdf
- 计算几何的模板(大神整理)
- 打破思维定势,创新景区门票网络分销模式
- Oracle格式化总结
- 基于图的广度优先搜索策略(耿7.11)
- 爬取东方财富的十大成交股
- 来个模态kuang_使用 React 制作一个模态框
- js 解析GET 请求参数