TI中文支持网
TI专业的中文技术问题搜集分享网站

如何将管脚传递给子函数中的变量,通过对变量的操作将管脚置一或置零?

#define BDATA1 GpioDataRegs.GPASET.bit.GPIO24
#define BDATA0 GpioDataRegs.GPACLEAR.bit.GPIO24

#define CDATA1 GpioDataRegs.GPASET.bit.GPIO22
#define CDATA0 GpioDataRegs.GPACLEAR.bit.GPIO22

void main()
{ Uint16 date1,date0;

date1=BDATA1;date0=BDATA0;handle();

date1=BDATA1;date0=BDATA0;handle();}

void handle()

{date1=1;date0=1;}

程序是一些片段,主题思想是第一次子函数是在GPIO24上操作,第二次是在GPIO22上操作,这样写可以么?能将管脚直接赋给变量么?如果不能,怎样改才能实现子函数每次都在不同的管脚上操作呢?请大神赐教。

daniel wang1:

回复 Joey Mao:

对,是这个意思,这样写会更好,但问题的关键不在这里,而在如何将GPIO24传进子函数。您看上面那种写法对么?我个人感觉不靠谱,您有好的写法么?

#define BDATA1 GpioDataRegs.GPASET.bit.GPIO24
#define BDATA0 GpioDataRegs.GPACLEAR.bit.GPIO24

#define CDATA1 GpioDataRegs.GPASET.bit.GPIO22
#define CDATA0 GpioDataRegs.GPACLEAR.bit.GPIO22

void main()
{ Uint16 date1,date0;

date1=BDATA1;date0=BDATA0;handle();

date1=BDATA1;date0=BDATA0;handle();}

void handle()

{date1=1;date0=1;}

程序是一些片段,主题思想是第一次子函数是在GPIO24上操作,第二次是在GPIO22上操作,这样写可以么?能将管脚直接赋给变量么?如果不能,怎样改才能实现子函数每次都在不同的管脚上操作呢?请大神赐教。

daniel wang1:

回复 Joey Mao:

这样的话子函数就得写两个了,要知道在我的原程序中可是有好多个子函数的,这样都得写两遍,如果我再加一个管脚的话,那每个子函数就得写三遍,太麻烦。所以我想直接将管脚通过变量传到我的各个子函数中。

#define BDATA1 GpioDataRegs.GPASET.bit.GPIO24
#define BDATA0 GpioDataRegs.GPACLEAR.bit.GPIO24

#define CDATA1 GpioDataRegs.GPASET.bit.GPIO22
#define CDATA0 GpioDataRegs.GPACLEAR.bit.GPIO22

void main()
{ Uint16 date1,date0;

date1=BDATA1;date0=BDATA0;handle();

date1=BDATA1;date0=BDATA0;handle();}

void handle()

{date1=1;date0=1;}

程序是一些片段,主题思想是第一次子函数是在GPIO24上操作,第二次是在GPIO22上操作,这样写可以么?能将管脚直接赋给变量么?如果不能,怎样改才能实现子函数每次都在不同的管脚上操作呢?请大神赐教。

Joey Mao:

回复 daniel wang1:

如果你的动作是固定的,就可以直接写成一个函数啊,比如:void Set(void){    GpioDataRegs.GPASET.bit.GPIO24 = 1;    GpioDataRegs.GPASET.bit.GPIO22 = 1;}

void Clear(void){    GpioDataRegs.GPACLEAR.bit.GPIO24 = 1;    GpioDataRegs.GPACLEAR.bit.GPIO22 = 1;}

void SetClear(void){    GpioDataRegs.GPASET.bit.GPIO24 = 1;    GpioDataRegs.GPASET.bit.GPIO22 = 1;    GpioDataRegs.GPACLEAR.bit.GPIO24 = 1;    GpioDataRegs.GPACLEAR.bit.GPIO22 = 1;}

每一个IO口的状态变化一次一条语句是必不可少的

#define BDATA1 GpioDataRegs.GPASET.bit.GPIO24
#define BDATA0 GpioDataRegs.GPACLEAR.bit.GPIO24

#define CDATA1 GpioDataRegs.GPASET.bit.GPIO22
#define CDATA0 GpioDataRegs.GPACLEAR.bit.GPIO22

void main()
{ Uint16 date1,date0;

date1=BDATA1;date0=BDATA0;handle();

date1=BDATA1;date0=BDATA0;handle();}

void handle()

{date1=1;date0=1;}

程序是一些片段,主题思想是第一次子函数是在GPIO24上操作,第二次是在GPIO22上操作,这样写可以么?能将管脚直接赋给变量么?如果不能,怎样改才能实现子函数每次都在不同的管脚上操作呢?请大神赐教。

daniel wang1:

回复 Joey Mao:

这样的话就是同时操作两个管脚了,但我希望的是先操作24,再操作22,依次完成操作,怎么写呢?

#define BDATA1 GpioDataRegs.GPASET.bit.GPIO24
#define BDATA0 GpioDataRegs.GPACLEAR.bit.GPIO24

#define CDATA1 GpioDataRegs.GPASET.bit.GPIO22
#define CDATA0 GpioDataRegs.GPACLEAR.bit.GPIO22

void main()
{ Uint16 date1,date0;

date1=BDATA1;date0=BDATA0;handle();

date1=BDATA1;date0=BDATA0;handle();}

void handle()

{date1=1;date0=1;}

程序是一些片段,主题思想是第一次子函数是在GPIO24上操作,第二次是在GPIO22上操作,这样写可以么?能将管脚直接赋给变量么?如果不能,怎样改才能实现子函数每次都在不同的管脚上操作呢?请大神赐教。

Joey Mao:

回复 daniel wang1:

不算是同时操作,函数中的语句执行是有先后顺序的,只是间隔时间很短,要看你的这个先操作后操作有没有具体的时间间隔要求,时间间隔小有什么影响

#define BDATA1 GpioDataRegs.GPASET.bit.GPIO24
#define BDATA0 GpioDataRegs.GPACLEAR.bit.GPIO24

#define CDATA1 GpioDataRegs.GPASET.bit.GPIO22
#define CDATA0 GpioDataRegs.GPACLEAR.bit.GPIO22

void main()
{ Uint16 date1,date0;

date1=BDATA1;date0=BDATA0;handle();

date1=BDATA1;date0=BDATA0;handle();}

void handle()

{date1=1;date0=1;}

程序是一些片段,主题思想是第一次子函数是在GPIO24上操作,第二次是在GPIO22上操作,这样写可以么?能将管脚直接赋给变量么?如果不能,怎样改才能实现子函数每次都在不同的管脚上操作呢?请大神赐教。

daniel wang1:

回复 Joey Mao:

它实际上是要求先用24将所有子函数跑一遍,再用22跑一遍,两个管脚必须分先后依次完整的跑完所有子程序。

#define BDATA1 GpioDataRegs.GPASET.bit.GPIO24
#define BDATA0 GpioDataRegs.GPACLEAR.bit.GPIO24

#define CDATA1 GpioDataRegs.GPASET.bit.GPIO22
#define CDATA0 GpioDataRegs.GPACLEAR.bit.GPIO22

void main()
{ Uint16 date1,date0;

date1=BDATA1;date0=BDATA0;handle();

date1=BDATA1;date0=BDATA0;handle();}

void handle()

{date1=1;date0=1;}

程序是一些片段,主题思想是第一次子函数是在GPIO24上操作,第二次是在GPIO22上操作,这样写可以么?能将管脚直接赋给变量么?如果不能,怎样改才能实现子函数每次都在不同的管脚上操作呢?请大神赐教。

Joey Mao:

回复 daniel wang1:

有点糊涂了,你的GPIO22和24是输入脚?是想通过IO电平变换来控制功能函数的执行?这样的话就不是我刚写的那些函数那么写了,我那是GPIO作为输出时赋值

#define BDATA1 GpioDataRegs.GPASET.bit.GPIO24
#define BDATA0 GpioDataRegs.GPACLEAR.bit.GPIO24

#define CDATA1 GpioDataRegs.GPASET.bit.GPIO22
#define CDATA0 GpioDataRegs.GPACLEAR.bit.GPIO22

void main()
{ Uint16 date1,date0;

date1=BDATA1;date0=BDATA0;handle();

date1=BDATA1;date0=BDATA0;handle();}

void handle()

{date1=1;date0=1;}

程序是一些片段,主题思想是第一次子函数是在GPIO24上操作,第二次是在GPIO22上操作,这样写可以么?能将管脚直接赋给变量么?如果不能,怎样改才能实现子函数每次都在不同的管脚上操作呢?请大神赐教。

daniel wang1:

回复 Joey Mao:

我是通过两个管脚置一置零分别控制两个测量模块,原程序中不但有通过管脚往模块写时序,还有通过管脚读模块返回来的数据,必须先让模块一执行再让模块二执行,且他们执行的程序都是一样的,但返回的数据不同。

赞(0)
未经允许不得转载:TI中文支持网 » 如何将管脚传递给子函数中的变量,通过对变量的操作将管脚置一或置零?
分享到: 更多 (0)