如何在小車任務板上添加一個轉向燈指令?

      網友投稿 679 2025-03-31

      首先打開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小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:做好統計報表報送工作(統計報送工作總結)
      下一篇:Python中break,continue,return的區別
      相關文章
      日韩精品成人亚洲专区| 亚洲人成综合在线播放| 亚洲精品国产精品国自产网站| 亚洲综合国产一区二区三区| 亚洲福利视频一区二区| 亚洲Aⅴ在线无码播放毛片一线天| 亚洲中文字幕AV在天堂| 精品亚洲成在人线AV无码| 亚洲一区精彩视频| 亚洲综合小说久久另类区| 亚洲精品国产免费| 亚洲jjzzjjzz在线观看| 亚洲一区二区三区在线网站| 国产成人精品亚洲日本在线| ass亚洲**毛茸茸pics| 亚洲综合精品伊人久久| 亚洲另类无码一区二区三区| 亚洲精品无码成人片久久不卡| 久久亚洲精品国产精品婷婷| 在线aⅴ亚洲中文字幕| 亚洲人av高清无码| 亚洲?v无码国产在丝袜线观看| 亚洲免费一区二区| 中文字幕一精品亚洲无线一区| 亚洲欭美日韩颜射在线二| 亚洲成AV人片在线观看无码 | 久久亚洲精品无码AV红樱桃| 亚洲人成网站影音先锋播放| 亚洲伦理中文字幕| 亚洲av色香蕉一区二区三区蜜桃| 亚洲人成人一区二区三区| 色婷婷六月亚洲综合香蕉| 亚洲伊人精品综合在合线| 亚洲熟妇无码AV| 国产亚洲视频在线| 最新精品亚洲成a人在线观看| 亚洲av综合avav中文| 亚洲综合一区二区精品久久| 中国亚洲呦女专区| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲一卡2卡三卡4卡有限公司|