XML DOM 獲取節點值
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小時內刪除侵權內容。