首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将表达式赋值给ty胡枝子f结构变量

将表达式赋值给ty胡枝子f结构变量
EN

Stack Overflow用户
提问于 2015-04-22 15:25:15
回答 2查看 643关注 0票数 0

对不起,我不知道该怎么问我要找什么。这是我的问题。我有一个msp430处理器连接到一堆收发器。我有一个独立的独立输出去重新选择每一个收发器。正常情况下,我定义每个芯片的选择如下

代码语言:javascript
复制
#define enable_port_rx  P1OUT &= ~BIT2
#define disable_port_rx P1OUT |= BIT2
#define enable_port_tx  P1OUT |= BIT1
#define disable_port_tx P1OUT &= ~BIT1

我对每个收发器都有一个结构,我把它们放入一个数组中,这样我就可以用循环来迭代它们。

代码语言:javascript
复制
extern motors m[10];
typedef struct
{
    unsigned char address;
    unsigned int value;
    unsigned int xdata[10];
} motors;

我希望能够从结构中启用/禁用rx/tx。我想做这样的事。

代码语言:javascript
复制
m[0].enable_tx = P1OUT |= BIT1;
m[0].disable_tx = P1OUT &= ~BIT1;
m[1].enable_tx = P3OUT |= BIT2;
m[1].disable_tx = P3OUT &= ~BIT2;

这样我就可以在需要的时候打电话给他们。

代码语言:javascript
复制
m[0].disable_tx; //disable tx
m[1].disable_tx; //disable tx

我想下面这样的东西会有用的。也就是说,我保存了指向寄存器的指针,并在需要时访问它们所需的位。但这行不通。

代码语言:javascript
复制
//inside strut
volatile unsigned char *rxPxOUT;
unsigned char rxBITx;
volatile unsigned char *txPxOUT;
unsigned char txBITx;

//setup
m[0].txPxOUT=&P1OUT;
m[0].txBITx = BIT1;

//function call
&m[0].txPxOUT &= ~m[0].txBITx;

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-22 15:32:58

我显然无法亲自测试,但我认为唯一的错误是

代码语言:javascript
复制
&m[0].txPxOUT &= ~m[0].txBITx;

这应该是

代码语言:javascript
复制
*m[0].txPxOUT &= ~m[0].txBITx;

编辑:您可以将代码放入成员函数,如下所示:

代码语言:javascript
复制
typedef struct
{
    ....
    void disable_tx();
} motors;

void motors::disable_tx()
{
    *txPxOUT &= ~txBITx;
}

就这样叫它:

代码语言:javascript
复制
m[0].disable_tx();
票数 1
EN

Stack Overflow用户

发布于 2015-04-22 15:33:24

可以将函数指针添加到结构中,然后调用它们。

代码语言:javascript
复制
extern motors m[10];
typedef struct
{
  unsigned char address;
  unsigned int value;
  unsigned int xdata[10];

  void (*disable_tx)(void);
} motors;

[...]

void disable_tx_1(void)
{
  P1OUT &= ~BIT1;
}

[...]

m[0].disable_tx = disable_tx_1

[...]

m[0].disable_tx();

[...]

如果您想拥有类似于问题中的lambda风格的函数,可以查看GCC匿名函数或其他在C中执行匿名函数的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29802115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档