S32K312基於Gpt模組閃燈

關鍵字 :s32k312LEDs32ds開發板定時器MCUs32k3

本文將透過在S32DS中導入官方Gpt範例程式並進行適配,實現開發板LED的控制。透過這個專案,我們將了解開發板Gpt模組的使用方式。

 

軟體環境

  1. S32DS 用於 S32 工作環境
  2. S32K3 RTD AUTOSAR 4.4 SDK

 

硬體環境

  1. Knight S32K312 評估版
  2. 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

更多資訊,請掃碼關注我們!


 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

:

評論