OpenEdv-开源电子网

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

关于位带操作的问题 急!求大神解答

[复制链接]

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2019-5-31
在线时间
8 小时
发表于 2019-11-22 20:06:37 | 显示全部楼层 |阅读模式
10金钱
最近在用正点原子的stm32做个小玩意用来参加比赛,我需要使用多个595芯片,每个595芯片需要用到3个引脚,引脚输入输出是通过位带操作完成的。宏定义如图1.

595驱动程序中需要用到宏定义的位带操作(表述不是很恰当,具体看图2),我要用到多个595芯片,而驱动程序大致相同,只是三个引脚不相同,我觉得应该不需要写多个重复的驱动程序。
我想能不能通过把宏定义作为函数形参使用,这样只需要一个驱动程序就行了。而位带操作本质还是对地址的操作,所以我想知道位带操作的类型是什么(这样表述好像也有问题,不过希望大家能明白,没明白我问的是什么就回帖聊吧)
能不能作为函数参数传递

谢谢各位

图一

图一

图二

图二

最佳答案

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

多个同样芯片我是这么搞得
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-11-22 20:06:38 | 显示全部楼层
多个同样芯片我是这么搞得 无标题.png
回复

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2019-5-31
在线时间
8 小时
 楼主| 发表于 2019-11-22 20:09:04 | 显示全部楼层
在线蹲大佬
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-11-22 20:21:51 | 显示全部楼层

引脚操作再封装个函数不就行了
回复

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2019-5-31
在线时间
8 小时
 楼主| 发表于 2019-11-22 20:38:12 | 显示全部楼层
如 PAout(n) = 1 位带操作等价为:
*((volatile unsigned long  *)(GPIOAn_address))=1;
那么,如果用位带操作作为函数参数的话,以我宏定义的HC595_SCK为例,想直接将宏定义传参,参数是“*(volatile unsigned long  *)”类型,还是“volatile unsigned long  *”类型,或者其他类型呢
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14410
金钱
14410
注册时间
2018-8-3
在线时间
1156 小时
发表于 2019-11-22 21:14:36 | 显示全部楼层
不是很清楚你表达的内容 不过像你图一 那样定义是可以的  
回复

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2019-5-31
在线时间
8 小时
 楼主| 发表于 2019-11-22 22:06:15 | 显示全部楼层
简单来说就是#define A Pout(n)
A能用做某个函数的形参吗,如果能,那它的类型应该是什么
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-11-22 22:48:55 | 显示全部楼层
#define HC595_SCK(n)        PAout(n)
#define HC595_RCK(n)        PAout(n)
#define HC595_SER(n)        PAout(n)
楼主应该想要的是这个
一分耕耘一分收获。
回复

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2019-5-31
在线时间
8 小时
 楼主| 发表于 2019-11-25 09:33:57 | 显示全部楼层
nashui_sx 发表于 2019-11-23 12:06
多个同样芯片我是这么搞得

谢谢,已解决
回复

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2019-5-31
在线时间
8 小时
 楼主| 发表于 2019-11-25 09:34:24 | 显示全部楼层
yklstudent 发表于 2019-11-22 22:48
#define HC595_SCK(n)        PAout(n)
#define HC595_RCK(n)        PAout(n)
#define HC595_SER(n)     ...

谢谢你,已解决
回复

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2019-5-31
在线时间
8 小时
 楼主| 发表于 2019-11-25 09:34:51 | 显示全部楼层
nashui_sx 发表于 2019-11-22 20:21
引脚操作再封装个函数不就行了

谢谢,已解决哈哈
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 08:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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