如何在小车任务板上添加一个转向灯指令?

网友投稿 479 2022-05-28

首先打开HARDWARE目录下的tba.c(任务板的程序)79行的任务板转向灯控制函数,代码如下:

/** 函数功能: 任务板转向灯控制 参 数:LorR L_LED--左转向灯 R_LED--右转向灯 swch SET -- 开 RESET--关 返 回 值: 无 */ void Set_tba_WheelLED(uint8_t LorR,uint8_t swch)//第一个形参:左转向灯还是右转向灯 第二个形参:转向灯开启还是关闭 { switch(LorR) { case L_LED: //左转向灯 if(swch) //如果swch等于SET(SET!=0始终为真,右击SET进入SET的定义可查看。definition:定义),代表左转向灯打开 GPIO_ResetBits(GPIOH,GPIO_Pin_10); //如果成立,清除GPIOH第10个端口,即让灯亮。 reset:清零、重置 else GPIO_SetBits(GPIOH,GPIO_Pin_10); //否则,就让端口10的灯灭 break; case R_LED: //右转向灯 if(swch) GPIO_ResetBits(GPIOH,GPIO_Pin_11); //如果成立,清除GPIOH第11个端口,即让灯灭。 reset:清零、重置 else GPIO_SetBits(GPIOH,GPIO_Pin_11); //否则,就让端口11的灯灭 break; } }

右击SET(81行左右,在注释里),点击Go To Definition Of 'SET',进入到下列函数:

观察857行,我们发现,RESET被赋值为0,SET被赋值为非0 。

右击L_LED,点击Go To Definition Of 'L_LED',进入到tba.h里。

如何在小车任务板上添加一个转向灯指令?

将#include "sys.h" 添加到tba.h里。如下图:

首先确定任务板操作的是哪几个端口,如何确定?通过任务板转向灯控制函数的下面这两条语句确定

if(swch) //如果swch等于SET(即1),代表左转向灯打开 GPIO_ResetBits(GPIOH,GPIO_Pin_10); //清除GPIOH第10个灯清零

可以看到左转是对GPIOH第10个灯清零,于是我们打开sys.h(右击上一张图片里的sys.h,点击 open document "sys.h")的第55行,如下

复制#define PHout(n),粘贴到tba.h里,并将这个端口宏定义为一个变量:

#define Tba_L_LED PHout(10) //将任务板的左转向灯端口PHout(10)宏定义为Tba_L_LED变量 #define Tba_R_LED PHout(11) //将任务板的右转向灯端口PHout(11)宏定义为Tba_R_LED变量

右转类似,上面已经写出。

调用(已测,都可用):

Tba_L_LED = 0; //任务板左转向灯开启

Set_tba_WheelLED(L_LED,SET);//任务板左转向灯开启,这里的SET也可以用非零正数代替

Tba_L_LED = 1; //任务板左转向灯关闭

Set_tba_WheelLED(L_LED,RESET);//任务板左转向灯关闭

Tba_R_LED = 0; //任务板右转向灯开启

Set_tba_WheelLED(R_LED,SET);//任务板右转向灯开启

Tba_R_LED = 1; //任务板右转向灯关闭

Set_tba_WheelLED(R_LED,RESET);//任务板右转向灯关闭

形式参数只有一个速度,原因是循迹无需给定小车要行驶多少码盘值,循迹的原理是让小车从任意位置,沿着黑线行驶至下个十字路口处,当循迹板扫描到黑线时,小车停止运行;或者从协议上看,循迹的主指令为0x06,对应的副指令只有速度值,没有码盘值。

由于任务板转向灯控制函数的代码:当1时灯端口灯灭,swch = 0时端口灯亮,与常理相反,所以我们将左转向灯和右转向灯if(swch) ……else …… 的两条语句调换顺序,换成我们符合我们正常逻辑的顺序。最终代码如下:

最后,使用时调用此函数即可:

Tba_R_LED = 1; //任务板左转向灯开启

Tba_R_LED = 0; //任务板左转向灯关闭

Tba_R_LED = 1; //任务板右转向灯开启

Tba_R_LED = 0; //任务板右转向灯关闭

例如:

嵌入式

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:鲲鹏云服务器移植SpeedSeq
下一篇:初始C语言02-分支与循环(上)
相关文章