OpenEdv-开源电子网

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

STM32F103的位操作求助,请帮忙

[复制链接]

5

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2021-11-22
在线时间
157 小时
发表于 2022-1-14 10:23:27 | 显示全部楼层 |阅读模式
10金钱
本人刚学32不久,位操作太难没学,现有一个030的例子,里面有2行是位操作的,但是不能直接移植到103上用,见下:
#define DIO_IN()                   {GPIOA->MODER&=~GPIO_MODER_MODER4;}                                                                                                                                         
#define DIO_OUT()                  {GPIOA->MODER&=~GPIO_MODER_MODER4;GPIOA->MODER|=GPIO_MODER_MODER4_0;}



有大神帮忙改成103的位操作吗?
非常感谢!

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

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4943
金钱
4943
注册时间
2015-1-10
在线时间
620 小时
发表于 2022-1-14 15:05:58 | 显示全部楼层
你要对寄存器表,看看GPIO寄存器分布是不是一样的
回复

使用道具 举报

11

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2021-6-17
在线时间
206 小时
发表于 2022-1-14 15:17:13 | 显示全部楼层
这个是改变引脚模式的,改成103位操作的话需要知道引脚
回复

使用道具 举报

5

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2021-11-22
在线时间
157 小时
 楼主| 发表于 2022-1-14 15:28:35 | 显示全部楼层
ZKX182 发表于 2022-1-14 15:17
这个是改变引脚模式的,改成103位操作的话需要知道引脚

随便帮我改成PB4就行了,到时我再改。谢谢你
回复

使用道具 举报

5

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2021-11-22
在线时间
157 小时
 楼主| 发表于 2022-1-14 15:29:05 | 显示全部楼层
阿侑kevin 发表于 2022-1-14 15:05
你要对寄存器表,看看GPIO寄存器分布是不是一样的

不会看,看不懂
回复

使用道具 举报

11

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2021-6-17
在线时间
206 小时
发表于 2022-1-14 15:45:21 | 显示全部楼层
#define DIO_IN()    (GPIOB->CRL &=~(0xF<<16);GPIOB->CRL |=~(1<<18);) //浮空输入模式
#define  DIO_OUT()    (GPIOB->CRL &= ~(0XF<<16); GPIOB->CRL |=~(1<<16);)//推挽输出、10Mhz
初学32的话建议你最好还是看一下芯片的参考手册,这是最基础的
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4943
金钱
4943
注册时间
2015-1-10
在线时间
620 小时
发表于 2022-1-14 15:55:57 | 显示全部楼层

劝退,看看别的工作吧
回复

使用道具 举报

5

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2021-11-22
在线时间
157 小时
 楼主| 发表于 2022-1-14 16:19:43 | 显示全部楼层
ZKX182 发表于 2022-1-14 15:45
#define DIO_IN()    (GPIOB->CRL &=~(0xF

不是说用库函数了,就可以不用管寄存器了嘛,关键是看不懂。
回复

使用道具 举报

5

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2021-11-22
在线时间
157 小时
 楼主| 发表于 2022-1-14 16:20:38 | 显示全部楼层
阿侑kevin 发表于 2022-1-14 15:55
劝退,看看别的工作吧


初学者必须要学寄存器操作吗,感觉太难了
回复

使用道具 举报

11

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2021-6-17
在线时间
206 小时
发表于 2022-1-14 16:34:45 | 显示全部楼层
库函数也是基于寄存器操作的,只不过是将寄存器操作进行封装罢了,你可以看一下库函数,底层都是位操作
回复

使用道具 举报

5

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2021-11-22
在线时间
157 小时
 楼主| 发表于 2022-1-14 17:05:37 | 显示全部楼层
ZKX182 发表于 2022-1-14 16:34
库函数也是基于寄存器操作的,只不过是将寄存器操作进行封装罢了,你可以看一下库函数,底层都是位操作

哥,请问一下,我单独写两个函数对这个脚实现浮空输入;推挽输出;   也可以吧?
回复

使用道具 举报

11

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2021-6-17
在线时间
206 小时
发表于 2022-1-14 17:11:29 | 显示全部楼层
可以。。。
回复

使用道具 举报

11

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2021-6-17
在线时间
206 小时
发表于 2022-1-14 17:17:40 | 显示全部楼层
用#define的话,我上面发那个改成大括号就行了,不然会报错
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 20:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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