本文將透過在S32DS中導入官方Gpt範例程式並進行適配,實現開發板LED的控制。透過這個專案,我們將了解開發板Gpt模組的使用方式。
軟體環境
- S32DS 用於 S32 工作環境
- S32K3 RTD AUTOSAR 4.4 SDK
硬體環境
- Knight S32K312 評估版
- J-Link Debug 燒錄器
打開 S32DS,點擊「File」→「New」→「S32DS Project from Example」,在彈出的對話框中選擇「S32K3 RTD AUTOSAR 4.4 2.0.1 D2207 Example Projects」,然後在下方找到「Gpt S32K3xx Examples」,選擇「Gpt_Example_S32K312」,點擊「Finish」完成專案匯入。
和之前一樣,我們先打開項目資料夾下的「Gpt_example_DS.mex」
,進入到專案的設定頁面,再次在頁面中點擊
更改晶片封裝為100針。

選擇後更新原始碼,外部設備模組會出錯。

我們可以先選擇熟悉的模組,比如 Port 模組來解決問題。打開 Port 模組後,可以看到 PortPin Mscr 是錯誤的,這裡和之前博文提到的情況相同,是因為切換封裝後,官方開發板的 LED 在 Knight 評估板上不對應了。這裡我們改為 PTB10,即 Mscr = 42。
此時我們更新了原始碼,已經沒有錯誤了。Port這一部分在之前的文章中已經介紹過了。接下來我們來了解一下Gpt模組。在外設中點擊Gpt模組查看配置。
在GPT所有配置頁中選擇GptChannelConfigSet,這是一個主要用於配置GPT參數的頁面。如上圖所示,初始為1個GPT通道配置,Hwlp選擇為PIT,即依賴的硬體模組為PIT週期中斷定時器。計數模式GptChannelMode設置為持續計數模式,計數頻率為24000000Hz,也就是24MHz。這個數值是固定的,因為我們在接下來選擇的時鐘配置中,GPT模組的時鐘實際為AIPS_SLOWCLK,並且在Mcu模組中被分頻為24MHz。
同時我們也可以配置Gpt的計數完成的回呼函數,取個名字為「Gpt_PitNotification」,以便於在回呼函數中實現LED的閃爍。
接下來是選擇Gpt的外設來源,選擇GptHwConfiguration選項卡,可以選擇Gpt的硬體觸發來源,這裡預設選擇為PIT模組的CH0。

在下一個選項卡 GptConfigurationOfOptApiServices 裡勾選「GptEnableDisableNotificationApi」,以生成回呼函式。
選擇GptDriverConfiguration選項卡,可以看到Driver層的Gpt的一些配置,重要的是下方的「GptClockReferencePoint」,這裡會指向Mcu模組的時鐘配置。
在外設中選擇Mcu模組,在「McuModuleConfiguration」->「McuClocksettingConfig」->「McuClockReferencePoint」可以看到我們在Gpt模組中引用的時鐘來源。
回到專案程式碼,打開「main.c」,查看程式碼。可以看到相較於之前Port專案的函式,還多出三個Gpt模組的函式,依次為1初始化函式,2計時器啟動函式和3回呼函式初始化函式。
只有第二個定時器初始化函數的第二個參數可以由我們自行設定。前面已獲得GPT的ReferenceClock為24MHz,因此此處我們可以填入的最大計數值為24000000,也就是1秒重裝倒計時,並觸發回調函數。如果我們想要實現1秒LED燈翻轉,此處應修改為24000000。
While迴圈部分的意思是每10次LED翻轉,翻轉的時機可以透過回調函數中的“toggleLED”來設定。
將例程編譯下載到Knight評估板後,就可以看到藍色LED燈每秒翻轉閃爍10次了。
文章來自「S32K312 開發板評測活動」測評者:阚準
歡迎在文章下方留言評論,我們會及時回覆您的問題。
如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:WPIg
更多資訊,請掃碼關注我們!
評論