OpenEdv-开源电子网

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

关于stm32f103最小板的问题

[复制链接]

19

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2019-10-17
在线时间
42 小时
发表于 2019-11-22 17:16:01 | 显示全部楼层 |阅读模式
1金钱
例程里面的iic例程,使用到了io口pb6和pb7板子上找不到,然后我用原子哥的例程直接改成pb8,pb9口输出iic,不行,改为pf8,pf9口输出,还是不行,为什么??其他参数都没有改,按道理不该出不来波形啊!!!!


附上源码,求大佬看看是我该iic的io口参数错了还是啥情况,明明iic
协议很容易出来,但是鉴于没有逻辑分析仪,我也不知道是什么原因

9.1版本带oled.zip

4.37 MB, 下载次数: 7

最佳答案

查看完整内容[请看2#楼]

#define SDA_IN() {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRL|=(u32)8CRL|=(u32)3CRH|=(u32)8CRH|=(u32)3CRH|=(u32)8
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2019-11-22 17:16:02 | 显示全部楼层
Blokeke 发表于 2019-11-26 14:01
这里后来改了,但是其实不改也行,改完还是不能用

#define SDA_IN()  {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRL|=(u32)8<<28;}
#define SDA_OUT() {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRL|=(u32)3<<28;}
这是你程序里的写法,这根本就不是对PF9的设置(sda)

==》
SCL时钟线只能时输出
SDA数据线可输入亦可输出,所以需要配置SDA该输出时为输出模式,该输入时为输入模式
#define SDA_IN()  {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRH|=(u32)8<<4;}
#define SDA_OUT() {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRH|=(u32)3<<4;}
这样子你再去试试
(CRL控制gpio0-gpio7,CRH控制gpio8-gpio15),你用PF9,那肯定是:
GPIOF->CRH&=0XFFFFFF0F;//清空PF9的模式位
GPIOF->CRH|=(u32)8<<4;//设置PF9的模式位(8为输出,3为输入)
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-11-23 01:26:09 | 显示全部楼层
八成是没改对,仿真看下IO状态,如果都没有输出,肯定不行的
回复

使用道具 举报

19

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2019-10-17
在线时间
42 小时
 楼主| 发表于 2019-11-23 12:22:26 | 显示全部楼层
正点原子 发表于 2019-11-23 01:26
八成是没改对,仿真看下IO状态,如果都没有输出,肯定不行的

怎么仿真看io口????
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-11-24 02:49:20 | 显示全部楼层
Blokeke 发表于 2019-11-23 12:22
怎么仿真看io口????

仿真器仿真,万用表或者示波器看IO状态
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2019-11-24 08:54:46 | 显示全部楼层
#define SDA_IN()  {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRL|=(u32)8<<28;}
#define SDA_OUT() {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRL|=(u32)3<<28;}
这里明明就不对
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-11-24 12:55:40 | 显示全部楼层
帮顶                  
成功没有捷径
回复

使用道具 举报

19

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2019-10-17
在线时间
42 小时
 楼主| 发表于 2019-11-26 14:01:03 | 显示全部楼层
szczyb1314 发表于 2019-11-24 08:54
#define SDA_IN()  {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRL|=(u32)8CRL|=(u32)3

这里后来改了,但是其实不改也行,改完还是不能用
回复

使用道具 举报

14

主题

141

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1124
金钱
1124
注册时间
2015-12-20
在线时间
119 小时
发表于 2019-11-26 14:16:04 | 显示全部楼层
楼主用什么板?某宝上STM32F103C8T6最小板也有B6、B7口
如果用硬件I2C:
I2C1: PB6\PB7
I2C2: PB10\PB11

如果用软件模拟,哪个口都可以。
对应STM32F1系列的I2C,建议使用软件模拟。
回复

使用道具 举报

19

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2019-10-17
在线时间
42 小时
 楼主| 发表于 2019-11-26 14:28:47 | 显示全部楼层
szczyb1314 发表于 2019-11-24 08:54
#define SDA_IN()  {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRL|=(u32)8CRL|=(u32)3

顺便问一下这里寄存器的操作怎么改,比较少用寄存器改,我在f4上没改这个地方或者改都不影响,但是f1就不行。麻烦您了,谢谢
回复

使用道具 举报

19

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2019-10-17
在线时间
42 小时
 楼主| 发表于 2019-11-26 14:31:27 | 显示全部楼层
szczyb1314 发表于 2019-11-26 14:25
#define SDA_IN()  {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRL|=(u32)8CRL|=(u32)3CRH|=(u32)8CRH|=(u32)3CRH|= ...

那2我去试一试,有个不解,f4上面没改这,直接改用其他io口也行,这又是为啥。。。。f4上面只配置了输出模式,然后就可以输入输出了,不解
回复

使用道具 举报

19

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2019-10-17
在线时间
42 小时
 楼主| 发表于 2019-11-26 14:36:53 | 显示全部楼层
szczyb1314 发表于 2019-11-26 14:25
#define SDA_IN()  {GPIOF->CRH&=0XFFFFFF0F;GPIOF->CRL|=(u32)8CRL|=(u32)3CRH|=(u32)8CRH|=(u32)3CRH|= ...

贼开心,可以了,至于那个不改io输入输出的问题,看来还是自己没搞清楚。要是您有好的帖子告诉我也行,就不用您这么辛苦打字了。真的真的感谢您!!!!!
回复

使用道具 举报

19

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2019-10-17
在线时间
42 小时
 楼主| 发表于 2019-11-26 14:38:29 | 显示全部楼层
网络孤客 发表于 2019-11-26 14:16
楼主用什么板?某宝上STM32F103C8T6最小板也有B6、B7口
如果用硬件I2C:
I2C1: PB6\PB7

原子的103板子,没有预留出iic接口,我就改了,但是改错了,现在知道错了,谢谢大佬们的解答
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2019-11-26 14:42:46 | 显示全部楼层
Blokeke 发表于 2019-11-26 14:28
顺便问一下这里寄存器的操作怎么改,比较少用寄存器改,我在f4上没改这个地方或者改都不影响,但是f1就不 ...

给你的例子:(其实就是8个F,一个控制一个gpio,CRL、CRH各控制8个gpio)
SDA<==>PA6
PA6作为SDA那就是GPIOA的CRL(CRL控制gpio0-gpio7,CRH控制gpio8-gpio15)
#define SDA_IN()  {GPIOA->CRL&=0XF0FFFFFF;GPIOA->CRL|=(u32)8<<4*6;}
#define SDA_OUT() {GPIOA->CRL&=0XF0FFFFFF;GPIOA->CRL|=(u32)3<<4*6;}

SDA<==>PB13
PB13作为SDA那就是GPIOB的CRH(CRL控制gpio0-gpio7,CRH控制gpio8-gpio15)
#define SDA_IN()  {GPIOB->CRH&=0XFF0FFFFF;GPIOB->CRLH=(u32)8<<4*(13-8);}
#define SDA_OUT() {GPIOB->CRH&=0XFF0FFFFF;GPIOB->CRH|=(u32)3<<4*(13-8);}
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

19

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2019-10-17
在线时间
42 小时
 楼主| 发表于 2019-11-26 15:13:18 | 显示全部楼层
szczyb1314 发表于 2019-11-26 14:42
给你的例子:(其实就是8个F,一个控制一个gpio,CRL、CRH各控制8个gpio)
SDAPA6
PA6作为SDA那就是GPIOA ...

那请问f4的这个地方是的io口不改输入输出模式,直接一般配置完毕后直接可用又是为什么?
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2019-11-26 15:21:50 | 显示全部楼层
Blokeke 发表于 2019-11-26 15:13
那请问f4的这个地方是的io口不改输入输出模式,直接一般配置完毕后直接可用又是为什么?

这个就不了解了,不过最好还是明确的写程序确定它该输入就是输入该输出就是输出。
原来有人的电路配合浮空模式是可以不切换输入输出模式就可以用的
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 06:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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