打印

GPIO灵活控制

[复制链接]
楼主: 清枫城主
手机看帖
扫描二维码
随时随地手机跟帖
21
isseed| | 2015-10-31 22:39 | 只看该作者 回帖奖励 |倒序浏览
初始化之后才能操作。

使用特权

评论回复
22
zhuotuzi| | 2015-10-31 23:00 | 只看该作者
蛮贵版主说的真好,原来还有.all这么个用法

使用特权

评论回复
23
清枫城主|  楼主 | 2016-7-10 16:13 | 只看该作者
裁定心生 发表于 2015-10-31 17:02
可以,C++就有类似的操作。

问题是没学过C++ 只学过C语言 让后觉得51的控制容易掌握 所以想模拟出51的操作方式

使用特权

评论回复
24
清枫城主|  楼主 | 2016-7-10 16:16 | 只看该作者
lwsn 发表于 2015-10-31 10:57
.all相当于P0  
.bit相当于P0.0

这个我知道  
但是如果我要控制某个器件  采用8位并行接口 51可以直接用P0或者P1等直接控制,那么DSP的引脚如果我没办法采用连续的8个引脚来控制的话,我该怎么处理?此时我想的就是任意找8个引脚模拟出51的P1模式。

使用特权

评论回复
25
清枫城主|  楼主 | 2016-7-10 16:17 | 只看该作者
稳稳の幸福 发表于 2015-10-29 16:03
就像51操作一样,直接就是P0=com

我需要8个引脚,但是这8个引脚不连续,属于不同组的IO,这时就没办法直接用类似P0=COM的方法了

使用特权

评论回复
26
稳稳の幸福| | 2016-7-10 21:26 | 只看该作者
清枫城主 发表于 2016-7-10 16:17
我需要8个引脚,但是这8个引脚不连续,属于不同组的IO,这时就没办法直接用类似P0=COM的方法了 ...

应该可以吧,你通过一个宏定义来通过位的逻辑操作实现同时控制。

使用特权

评论回复
27
稳稳の幸福| | 2016-7-10 21:27 | 只看该作者
你可以定义一个宏或者一个函数,在这个函数体里面通过位的逻辑操作,来实现这个功能。因为操作时间间隔比较短,就跟同时操作一个连续端口是一样的效果。

使用特权

评论回复
28
清枫城主|  楼主 | 2016-8-31 19:28 | 只看该作者
稳稳の幸福 发表于 2016-7-10 21:27
你可以定义一个宏或者一个函数,在这个函数体里面通过位的逻辑操作,来实现这个功能。因为操作时间间隔比较 ...

宏我不懂 但是通过一个函数 我倒是觉得可行 但是我调试时 发现要对相应的GPIO进行操作时失败 但是语法也不报错
GpioDataRegs.GPBDAT.bit.GPIO39 = dat&0x01;这句话没有错 但是调试时 结果好像是不行。

使用特权

评论回复
29
清枫城主|  楼主 | 2016-9-1 12:26 | 只看该作者
zhangmangui 发表于 2015-10-25 22:50
.all就相当于你单片机中的P0啊    .bit就相当于你的P0.0
要整体操作   肯定就是.all = .all  & 0x*****     ...

关键是 如果我能用的GPIO没有在同一个组中 是随机的几个GPIO  那么我给数据就很麻烦了

使用特权

评论回复
30
清枫城主|  楼主 | 2016-9-1 12:27 | 只看该作者
xujihu 发表于 2015-10-26 01:22
要在同一个端口上才能直接P0操作吧,如果是任意IO就用个函数,根据需要在函数里面操作相应IO; lcd_data(ui ...

你这思路跟我想的一样 但是你这样操作太过于麻烦了  整个子函数运行完耗时严重

使用特权

评论回复
31
清枫城主|  楼主 | 2016-9-1 12:28 | 只看该作者
justtest111 发表于 2015-10-26 08:30
针对每个IO单独 位与 赋值就可以了啊。

这样麻烦 所以我想有没有什么办法可以一次性同时操作任意的几个GPIO

使用特权

评论回复
32
清枫城主|  楼主 | 2016-9-1 12:29 | 只看该作者
shenmu2012 发表于 2015-10-26 19:44
相关寄存器的控制很重要的,注意配置的。

这个我知道  现在的问题是我要任意搭配GPIO进行数据的并行处理  好比我要控制一个TFT显示屏 他是8位数据线并行控制  但是我能用的GPIO确实分布在不同的组中 那么 我要如何可以一次性的给这8个IO同时幅值呢

使用特权

评论回复
33
清枫城主|  楼主 | 2016-9-1 12:30 | 只看该作者
haolaishi 发表于 2015-10-26 22:36
可以的。可以用软件实现。把几个并为一个虚拟的IO组。

想法跟我一样 我正在调试   发现这样有问题

使用特权

评论回复
34
清枫城主|  楼主 | 2016-9-1 12:30 | 只看该作者
haolaishi 发表于 2015-10-26 22:37
如果有类似M3的位带的功能的话,也可以实现的。

STM32没学过  所以关于M3的位带功能不清楚

使用特权

评论回复
35
zhangmangui| | 2016-9-1 22:12 | 只看该作者
清枫城主 发表于 2016-9-1 12:26
关键是 如果我能用的GPIO没有在同一个组中 是随机的几个GPIO  那么我给数据就很麻烦了 ...

那样就用.bit啊    然后写个函数   将要写的数传进去
然后分配给各自的bit啊

使用特权

评论回复
36
zhangmangui| | 2016-9-1 22:14 | 只看该作者
51那比如P1.1和P0.1不也不在一个组吗    这就相当于.bit

使用特权

评论回复
37
isseed| | 2016-9-3 11:09 | 只看该作者
使用宏定义是最简单的。

使用特权

评论回复
38
isseed| | 2016-9-3 11:10 | 只看该作者
宏定义可以节约这些步骤。

使用特权

评论回复
39
清枫城主|  楼主 | 2016-9-19 17:27 | 只看该作者
zhangmangui 发表于 2016-9-1 22:12
那样就用.bit啊    然后写个函数   将要写的数传进去
然后分配给各自的bit啊  ...

嗯 我确实用着方法 但感觉效率不过高  

使用特权

评论回复
40
清枫城主|  楼主 | 2016-9-19 17:28 | 只看该作者
isseed 发表于 2016-9-3 11:10
宏定义可以节约这些步骤。

宏定义只能针对一个IO吧 我要的是数个作为一组来操作
可否写一下让我看下  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则