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

套件类型为28069M与8305,电机为无刷直流电机,工程为lab5b,与迪文屏进行通信,发生以下问题

你好,我想请问一个问题,就是在lab5b中,在原有的for循环之外再添加一个for循环,例如


它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
再假如把下图程序放入原有的for循环中,电机不转,也不接收数据,该怎么办?

Green Deng:for(;;)这个函数就是无线循环的,所以你的第一张图的情况是正常的,程序只会在第一个for中无限循环。
第二张图中的程序,一般不会把两个for(;;)嵌套使用,不是很确定问题原因。需要你单步运行一下,看看程序具体在那个语句中循环没有跳出来。

你好,我想请问一个问题,就是在lab5b中,在原有的for循环之外再添加一个for循环,例如


它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
再假如把下图程序放入原有的for循环中,电机不转,也不接收数据,该怎么办?

user6024771:

回复 Green Deng:

目前是放在声明一列是可以的,而且也能准确跳出循环,但是只能运行一次,每次执行只能再重新烧写等等,很麻烦,所以他为什么不能放入for循环里面呢?

你好,我想请问一个问题,就是在lab5b中,在原有的for循环之外再添加一个for循环,例如


它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
再假如把下图程序放入原有的for循环中,电机不转,也不接收数据,该怎么办?

Green Deng:

回复 user6024771:

因为for(;;)是无限循环,在执行第二个for(;;)之前,函数可能在第一个for(;;)中循环,跳不到第二个for(;;)中

你好,我想请问一个问题,就是在lab5b中,在原有的for循环之外再添加一个for循环,例如


它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
再假如把下图程序放入原有的for循环中,电机不转,也不接收数据,该怎么办?

user6024771:

回复 Green Deng:

即使没有第一个的FOR循环,也是不行,就是单纯的调用receive_byte();也不能放进第二个for循环中,只能在声明的部分,这是为什么呢?如果我想用sci.c的hal进行读写数据可以嘛?该如何写,有没有参考的?
因为我目前用的是f28069_Example_sci.c进行修改的,但是sci.c与它不一样,所以想问问有没有相关的例程可以供参考。

你好,我想请问一个问题,就是在lab5b中,在原有的for循环之外再添加一个for循环,例如


它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
再假如把下图程序放入原有的for循环中,电机不转,也不接收数据,该怎么办?

Green Deng:

回复 user6024771:

请问你提到的HAL是指硬件抽象层吗?不是很清楚HAL的sci.c是什么意思

你好,我想请问一个问题,就是在lab5b中,在原有的for循环之外再添加一个for循环,例如


它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
再假如把下图程序放入原有的for循环中,电机不转,也不接收数据,该怎么办?

user6024771:

回复 Green Deng:

Green Deng请问你提到的HAL是指硬件抽象层吗?不是很清楚HAL的sci.c是什么意思

是抽象层的含义;在lab5b.c中有一函数是HAL_setParams(halHandle,&gUserParams);自己写的不含有中断的SCI程序放在它之前就可以正常通信,电机也可以运行,但是只能进行一次通信,因为SCI的函数在声明中,并不在主循环中。

而放在HAL_setParams(halHandle,&gUserParams);之后就无法通信电机也不转

我所用到的转速是屏幕上可以操控的,假如说我第一次屏幕上给500,电机运行500转;此时屏幕上的转速增加,接下来就是重新烧写,很麻烦。

所以我想解决的是,为什么通信的函数无法放进主循环中呢?

赞(0)
未经允许不得转载:TI中文支持网 » 套件类型为28069M与8305,电机为无刷直流电机,工程为lab5b,与迪文屏进行通信,发生以下问题
分享到: 更多 (0)