它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
Green Deng:for(;;)这个函数就是无线循环的,所以你的第一张图的情况是正常的,程序只会在第一个for中无限循环。
第二张图中的程序,一般不会把两个for(;;)嵌套使用,不是很确定问题原因。需要你单步运行一下,看看程序具体在那个语句中循环没有跳出来。
它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
user6024771:
回复 Green Deng:
目前是放在声明一列是可以的,而且也能准确跳出循环,但是只能运行一次,每次执行只能再重新烧写等等,很麻烦,所以他为什么不能放入for循环里面呢?
它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
Green Deng:
回复 user6024771:
因为for(;;)是无限循环,在执行第二个for(;;)之前,函数可能在第一个for(;;)中循环,跳不到第二个for(;;)中
它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
user6024771:
回复 Green Deng:
即使没有第一个的FOR循环,也是不行,就是单纯的调用receive_byte();也不能放进第二个for循环中,只能在声明的部分,这是为什么呢?如果我想用sci.c的hal进行读写数据可以嘛?该如何写,有没有参考的?
因为我目前用的是f28069_Example_sci.c进行修改的,但是sci.c与它不一样,所以想问问有没有相关的例程可以供参考。
它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
Green Deng:
回复 user6024771:
请问你提到的HAL是指硬件抽象层吗?不是很清楚HAL的sci.c是什么意思
它只执行这一个循环,另一个循环不执行,也就是只接收数据,电机不运行;
user6024771:
回复 Green Deng:
Green Deng请问你提到的HAL是指硬件抽象层吗?不是很清楚HAL的sci.c是什么意思
是抽象层的含义;在lab5b.c中有一函数是HAL_setParams(halHandle,&gUserParams);自己写的不含有中断的SCI程序放在它之前就可以正常通信,电机也可以运行,但是只能进行一次通信,因为SCI的函数在声明中,并不在主循环中。
而放在HAL_setParams(halHandle,&gUserParams);之后就无法通信电机也不转
我所用到的转速是屏幕上可以操控的,假如说我第一次屏幕上给500,电机运行500转;此时屏幕上的转速增加,接下来就是重新烧写,很麻烦。
所以我想解决的是,为什么通信的函数无法放进主循环中呢?