OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 25934|回复: 28

请教下IIC例程中IO方向设置问题

[复制链接]

8

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2012-4-18
在线时间
76 小时
发表于 2013-7-20 21:30:16 | 显示全部楼层 |阅读模式

最近在学习iic读写,看了原子的程序,现在想把IIC端口改到 SCL --PB6,SDA--PB7
请教下下面这个IO方向设置要如何修改?
#define SDA_IN()  {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-21 01:14:51 | 显示全部楼层
#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2013-7-20
在线时间
9 小时
发表于 2013-7-21 08:45:56 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子老师,这样配置IO口是不是因为STM32的寄存器都要32位的方式配置?“|=(32)8<<28”是不是这个意思:定义32位数8,然后左移28位,寄存器再与左移28位后的数做或运算,取或运算的话是为了不影响寄存器原来的设置。
我刚学STM32,以前学51的时候没有遇到这样的赋值方式,在STM32里有很多赋值语句还不是很明白,所以问一下原子老师,如果能得到老师的指点那是我的荣幸!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-21 10:20:36 | 显示全部楼层
自己多写写代码,联系下,自己就知道了.
一帆风顺,不会得到太多的知识的,多碰几次壁,自然就懂了,而且印象深刻.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2012-4-18
在线时间
76 小时
 楼主| 发表于 2013-7-21 16:13:12 | 显示全部楼层
谢谢!
悲剧了,我板子上103ZET6的PB11 I/O口坏了,难怪搞了几天24c02读写不了。改到PB6\PB7已成功读写。
再次感谢原子!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-21 20:15:46 | 显示全部楼层
回复【5楼】guer:
---------------------------------
不客气,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2013-7-18
在线时间
0 小时
发表于 2013-8-4 16:55:39 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我想请问一下   是不是某个外设的一个引脚同时作为输入输出使用时   一般先让stm32设置为推免输出模式,然后具体操作时后再用下面这种方式具体制定IO口方向呢?
#define SDA_IN()  {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-4 18:21:24 | 显示全部楼层
这只是个人常用的方法,你可以用其他方式实现.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2013-5-26
在线时间
11 小时
发表于 2013-10-24 23:02:56 | 显示全部楼层
感谢啊,调了几天了,发现原来是IO方向设置错误
回复 支持 反对

使用道具 举报

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-10-14
在线时间
0 小时
发表于 2013-11-15 17:16:21 | 显示全部楼层
回复【5楼】guer:
谢谢! 悲剧了,我板子上103ZET6的PB11 I/O口坏了,难怪搞了几天24c02读写不了。改到PB6\PB7已成功读写。 再次感谢原子!!
---------------------------------
你好,我想问一下,在硬件连接上,板子上的24c02不是直接连在了PB10、PB11上的么?你是怎么设置在PB6/PB7上的?我看芯片手册上没有关于PB10、PB11的端口重映射是PB6/PB7啊
@原子哥 帮我也看看吧
回复 支持 反对

使用道具 举报

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-10-14
在线时间
0 小时
发表于 2013-11-15 17:17:42 | 显示全部楼层
回复【2楼】正点原子:
#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;} #define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}
---------------------------------
原子哥,我想问一下,在硬件连接上,板子上的24c02不是直接连在了PB10、PB11上的么?那设置PB6/PB7能驱动24c02?我看芯片手册上没有关于PB10、PB11的端口重映射是PB6/PB7啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-15 20:55:53 | 显示全部楼层
回复【11楼】fgq369:
---------------------------------
重新设计PCB,可以放PB6,PB7上。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-10-14
在线时间
0 小时
发表于 2013-11-15 21:11:34 | 显示全部楼层
回复【12楼】正点原子:
回复【11楼】fgq369: --------------------------------- 重新设计PCB,可以放PB6,PB7上。
---------------------------------
恩,那我知道了,谢谢
回复 支持 反对

使用道具 举报

4

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2013-3-21
在线时间
0 小时
发表于 2013-11-19 14:18:45 | 显示全部楼层
那 岂不是楼主当初还是没有搞对
等待就是浪费时间!
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2016-4-12
在线时间
97 小时
发表于 2016-6-17 16:34:35 | 显示全部楼层
为什么要这样设置啊   SDA的输入和输出
回复 支持 反对

使用道具 举报

13

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2016-1-4
在线时间
87 小时
发表于 2016-8-19 12:20:27 | 显示全部楼层
楼主,不小心点错了,不好意思啊
回复 支持 反对

使用道具 举报

13

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2016-1-4
在线时间
87 小时
发表于 2016-8-19 12:21:39 | 显示全部楼层
原子哥,如果我要任意设置一个SDA口的话,IO方向设置应该怎么设置????
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-2-27 11:50:18 | 显示全部楼层
正点原子 发表于 2013-7-21 01:14
#define&nbsp;SDA_IN()&nbsp;&nbsp;{GPIOB-&gt;CRL&=0X0FFFFFFF;GPIOB-&gt;CRL|=(u32)8&lt;&lt;28;}
#define&nb ...

你好,这里面那一句表示的是选中PB11口的呢?
回复 支持 反对

使用道具 举报

9

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2017-12-12
在线时间
19 小时
发表于 2018-1-18 15:12:28 | 显示全部楼层
正点原子 发表于 2013-7-21 01:14
#define&nbsp;SDA_IN()&nbsp;&nbsp;{GPIOB-&gt;CRL&=0X0FFFFFFF;GPIOB-&gt;CRL|=(u32)8&lt;&lt;28;}
#define&nb ...

原子哥,那如果我把IIC的SDA改为PB11,SCL改为PB10,IO的方向设置该怎么配置?
回复 支持 反对

使用道具 举报

1

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2016-4-8
在线时间
93 小时
发表于 2018-6-27 19:10:50 | 显示全部楼层
本帖最后由 hzz 于 2018-6-27 19:15 编辑
123精灵123 发表于 2018-1-18 15:12
原子哥,那如果我把IIC的SDA改为PB11,SCL改为PB10,IO的方向设置该怎么配置?

GPIOx->CRL(引脚的0-7脚),GPIOx->CRH(引脚的8-16脚),然后一个端口用4位来控制模式

改为如下:
    #define SDA_IN()       {GPIOB->CRH&=0xFFFF0FFF;GPIOB->CRH|=(u32)8<<12;}
    #define SDA_OUT()    {GPIOB->CRH&=0xFFFF0FFF;GPIOB->CRH|=(u32)3<<12;}
    //IO操作函数
    #define IIC_SCL          PBout(10)   //SCL
    #define IIC_SDA         PBout(11)   //SDA
    #define READ_SDA    PBin(11)    //输入SDA
回复 支持 反对

使用道具 举报

6

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2018-8-31
在线时间
115 小时
发表于 2018-9-27 10:14:36 | 显示全部楼层
正点原子 发表于 2013-7-21 01:14
#define&nbsp;SDA_IN()&nbsp;&nbsp;{GPIOB-&gt;CRL&=0X0FFFFFFF;GPIOB-&gt;CRL|=(u32)8&lt;&lt;28;}
#define&nb ...

请教  既然配置为推挽输出了,还能设置IO方向是什么意思???谢谢
回复 支持 反对

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2019-3-20
在线时间
23 小时
发表于 2019-3-22 17:09:02 | 显示全部楼层
hzz 发表于 2018-6-27 19:10
GPIOx->CRL(引脚的0-7脚),GPIOx->CRH(引脚的8-16脚),然后一个端口用4位来控制模式

改为如下:

讲解的太好了,瞬间明悟
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-8-13
在线时间
0 小时
发表于 2020-8-13 21:26:40 | 显示全部楼层
正点原子 发表于 2013-7-21 01:14
#define&nbsp;SDA_IN()&nbsp;&nbsp;{GPIOB-&gt;CRL&=0X0FFFFFFF;GPIOB-&gt;CRL|=(u32)8&lt;&lt;28;}
#define&nb ...

原子哥,想把IIC端口改到 SCL --PB13,SDA--PB15
请教下IO方向设置要如何修改?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-8-13
在线时间
0 小时
发表于 2020-8-13 21:29:50 | 显示全部楼层
原子哥,如果将想把IIC端口改到 SCL --PB13,SDA--PB15请教下IO方向设置要如何修改?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-8-13
在线时间
0 小时
发表于 2020-8-13 21:31:53 | 显示全部楼层
原子哥,想把IIC端口改到 SCL --PB13,SDA--PB15,请教下下面这个IO方向设置要如何修改?
#define SDA_IN()  {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;}       
#define SDA_OUT() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=1<<9*2;}
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2021-4-5
在线时间
1 小时
发表于 2021-4-5 16:02:31 | 显示全部楼层
原子哥,那如果我把IIC的SCL改为PC11,SDA改为PC12,IO的方向设置应该怎么设置啊?
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-11-8
在线时间
8 小时
发表于 2021-4-22 21:28:00 | 显示全部楼层
正点原子 发表于 2013-11-15 20:55
回复【11楼】fgq369:
---------------------------------
重新设计PCB,可以放PB6,PB7上。

你好,原子哥,新的pcb是在pb6 7上吗?在学习中也发现这个问题了。现在身边没电脑,没法看原理图。
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2021-7-20
在线时间
12 小时
发表于 2021-11-30 11:02:13 | 显示全部楼层
《STM32F1模拟I2C通信中寄存器操作IO方向详解》 https://blog.csdn.net/wyh68866/a ... Id=usr1mkqgl919blen
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2021-7-20
在线时间
12 小时
发表于 2021-11-30 11:03:31 | 显示全部楼层
《STM32F1模拟I2C通信中寄存器操作IO方向详解》 https://blog.csdn.net/wyh68866/a ... Id=usr1mkqgl919blen。这个博客写的很详细,可以去看一下,每个位操作的意思
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 16:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表