




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第第頁全志R128應用開發案例—中斷方式驅動旋轉編碼器
中斷方式驅動旋轉(編碼器)
旋轉編碼器是一種位置(傳感器),可將旋鈕的角位置(旋轉)轉換為用于確定旋鈕旋轉方向的輸出(信號)。
由于其堅固性和良好的數字控制;它們被用于許多應用中,包括(機器人)技術,CNC機器和打印機。
旋轉編碼器有兩種類型-絕對式和增量式。絕對編碼器為我們提供旋鈕的精確位置(以度為單位),而增量編碼器報告軸已移動了多少增量。
編碼器內部是一個槽形磁盤,該磁盤連接到公共接地引腳C以及兩個接觸針A和B。旋轉旋鈕時,A和B根據旋轉旋鈕的方向以特定順序與公共接地引腳C接觸。
當它們接觸公共接地時,它們會產生信號。當一個引腳先于另一引腳接觸時,這些信號就會彼此錯開90°。這稱為正交編碼。
順時針旋轉旋鈕時,首先連接A引腳,然后連接B引腳。逆時針旋轉旋鈕時,首先連接B引腳,然后連接A引腳。
通過跟蹤每個引腳何時與地面連接或與地面斷開,我們可以使用這些信號變化來確定旋鈕的旋轉方向。您可以通過在A更改狀態時觀察B的狀態來做到這一點。
我們搭建電路,如下:
載入方案
我們使用的開發板是R128-Devkit,需要開發C906核心的應用程序,所以載入方案選擇r128s2_module_c906
$sourceenvsetup.sh$lunch_(rtos)1
勾選GPIO驅動
mrtos_menuconfig找到下列驅動
DriversOp(ti)ons>socrelateddevicedrivers>GPIOdevices>[*]enableG(PI)Odriver[*]enbaleGPIOhalAPIs(Te)stcommand
編寫程序
打開你喜歡的編輯器,修改文件:lichee/rtos/projects/r128s2/module_c906/src/main.c
引入頭文件
#include
使用GPIO配置引腳
配置GPIO的上下拉狀態使用hal_gpio_set_pull(gpio_pin_tpin,gpio_pull_status_tpull);來設置。這里我們設置PA25引腳為默認上拉狀態。
hal_gpio_set_pull(GPIOA(25),GPIO_PULL_UP);配置GPIO輸入輸出模式使用hal_gpio_set_direction(gpio_pin_tpin,gpio_direction_tdirection);來設置GPIO的輸入輸出模式,這里配置為輸入模式。
hal_gpio_set_direction(GPIOA(25),GPIO_DIRECTION_INPUT);配置GPIO的MUX功能GPIO通常有多種功能,需要配置MUX選擇需要的功能,使用hal_gpio_pinmux_set_function(gpio_pin_tpin,gpio_muxsel_tfunction_index);來設置GPIO的復用功能,這里配置為GPIO輸入模式(GPIO_MUXSEL_IN)
hal_gpio_pinmux_set_function(GPIOA(25),GPIO_MUXSEL_IN);獲取GPIO的電平使用inthal_gpio_get_data(gpio_pin_tpin,gpio_data_t*data);來獲取GPIO的電平
gpio_data_tgpio_data;hal_gpio_get_data(GPIOA(25),申請配置中斷使用hal_gpio_to_irq方法來申請中斷號。hal_gpio_irq_request綁定中斷服務,hal_gpio_irq_enable啟用中斷。這里配置一個
//存放中斷號uint32_tirq_clk;//申請中斷號ret=hal_gpio_to_irq(ENC_CLK,if(ret完整代碼
#include#include#include#include#include"interrupt.h"#include#include#include#include#include#include"(FreeRTOS).h"#include"task.h"#include"tinatest.h"externintamp_init(void);//定義旋轉編碼器的引腳#defineENC_CLKGPIOA(24)#defineENC_DTGPIOA(25)#defineENC_SWGPIOA(29)//相關全局變量存儲intencode_counter=0;intencode_current_clk;intencode_lask_clk;intcurrent_dir=0;//編碼器中斷處理函數stat(ic)hal_irqreturn_tgpio_irq_encode(void*data){//獲取引腳的高低電平狀態gpio_data_tclk_value=GPIO_DATA_LOW;gpio_data_tdt_value=GPIO_DATA_LOW;hal_gpio_get_data(ENC_DT,hal_gpio_get_data(ENC_CLK,//判斷當前數據狀態encode_current_clk=clk_value;if(encode_current_clk!=encode_lask_clkcurrent_dir=1;}else{//反轉encode_counter--;current_dir=-1;}printf("Direction=%d,Counter=%dn",current_dir,encode_counter);}//刷新當前狀態encode_lask_clk=encode_current_clk;return0;}void(cpu)0_app_entry(void*pa(ram)){intret=0;//初始化系統資源amp_init();//A24->CLK,A25->DT.A29->SWhal_gpio_set_pull(ENC_CLK,GPIO_PULL_DOWN_DISABLED);hal_gpio_set_direction(ENC_CLK,GPIO_DIRECTION_INPUT);hal_gpio_pinmux_set_function(ENC_CLK,GPIO_MUXSEL_IN);//獲取初始編碼器CLK狀態gpio_data_tclk_data;hal_gpio_get_data(ENC_CLK,encode_lask_clk=clk_data;hal_gpio_set_pull(ENC_DT,GPIO_PULL_DOWN_DISABLED);hal_gpio_set_direction(ENC_DT,GPIO_DIRECTION_INPUT);hal_gpio_pinmux_set_function(ENC_DT,GPIO_MUXSEL_IN);//存放CLK,DT中斷號uint32_t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 以教育技術為引擎開啟個性化學習新紀元
- 醫療設備操作培訓的線上線下教育模式探索
- 統編版語文三年級下冊期末專項歸類《拼音寫漢字》提優卷(一)(含答案)
- 增強現實AR在教育評估中的運用研究
- 信息技術在特殊教育環境中的獨特應用
- 2025年吉林省松原市寧江區吉林油田第十二中學中考模擬物理試題
- 統編版2024-2025學年一年級語文下冊期末模擬試卷1(含答案)
- 教育科技融合的產物探究在線學習平臺的優勢與挑戰
- 探索教育機器人在辦公領域的應用前景
- 世界音樂節行業跨境出海項目商業計劃書
- 火龍罐療法經典課件
- 成品出貨檢驗報告模板
- 汽車修理廠管理制度
- 2023無損檢測技術資格人員考試泄漏檢測試卷(練習題庫)
- 超敏反應性疾病及其免疫檢測課件
- 非結核分支桿菌病影像學(NTM)-修改版課件
- 現在分詞作定語和狀語公開課一等獎市賽課獲獎課件
- 農業銀行銀行安全保衛考試真題模擬匯編(共418題)
- 睪丸扭轉-課件
- 密碼知識競賽參考題庫300題(各題型)
- 《顱內和椎管內腫瘤》
評論
0/150
提交評論