顯示包含「STM32F429」標籤的文章。顯示所有文章
顯示包含「STM32F429」標籤的文章。顯示所有文章

2024年8月26日星期一

Keil MDK Community 社群版

 紀錄一下 arm 公司的Keil MDK 整合開發環境,終於釋出無限制 code size 的版本 keil community 版本,提供不少專業版本功能,但不可用於商業用途。終於可以自由自在的開發與學習了!
在學生時期使用的是 MDK 被限制在 32Kbyte ,如果開發比較大的專案就容易被限制

簡單紀錄一下目前的網路找到的版本(資料來源擷取自網路)

1. MDK-Community
    適用於評估人員、愛好者、創客、教育等非商業用途。
2. MDK-Essential
    適用基於 Cortex-M 微控器項目的商業開發。
3. MDK-Professional
    適用於 Arm Cortex-M 和 Ethos-U 處理器的 Keil MDK 軟體開發套件 (SDK) 最全面的版本。 它專為專業嵌入式系統開發而設計,包含低版本的所有功能,以及功能安全、即時作業系統 (RTOS) 支援和程式碼覆蓋率分析的附加功能。

版本差異表

教學開始


開發環境

   1. 電腦環境    Win10
   2. 開發板        STM32F429-Discovery

安裝步驟

step1. 下載官方軟體
            連結https://www.keil.arm.com/mdk-community/

step2. 填入基本資料並下載

填入資料

點擊下載

step3. 執行安裝,一路下一步

點擊 next 開始安裝

安裝完成

step4. 開啟 Keil MDK 點擊 Licence Management 選擇 UserBase


step5. 加入 Licence 及啟用



到此 Keil MDK 啟用告一段落,接下來為測試紀錄,分為有啟用及無啟用
該怎麼測試呢? 最直接就是使用陣列宣告讓資料大小超過 32Kbytes

開啟 Keil MDK 開新專案進行測試
作者直接使用 STM32 Cube MX 產生專案

直接宣告一個整數陣列,直接宣告 64 Kbytes

未啟用認證
可以發現編譯不過

已啟用認證
可以發現編譯成功


資料來源




2021年9月21日星期二

TouchGFX_01 螢幕控制IO

        今天主要目標就是透過STM32F429 Discovery 開發版上面的TFT螢幕進行控制板子上的LED燈。話不多說,我們直接開始。

壹、開發環境


軟體

    1. TouchGFX 4.16.1

    2. STM32cubeIDE

硬體

    1. STM32F429 Discovery Board

安裝過程請見 

TouchGFX:https://850121.blogspot.com/2021/08/st-touchgfx.html

 

貳、MVP 控制概念圖

螢幕觸發事件會透過Presenter中間處理,再告訴Model控制對應的項目



參、開發步驟


 大致上的流程

    TouchGFX

1.建立TouchGFX專案

2.製作背景/文字/按鈕

3.建立觸發事件

4.產生專案程式碼

    STM32 Cube IDE 

1.匯入TouchGFX 產生的STM32 CUBE IDE的專案 

2.main.c 加入欲控制IO初始化

3.Model.hpp/Model.cpp 加入控制函式

4.Screen1Preseenter.hpp/Screen1Preseenter.cpp 加入控制函式

5.Screen1View.hpp/Screen1Preseenter.cpp加入控制函式

6.燒錄程式碼進開發板

 

Step01.建立TouchGFX專案

請參考此篇,選擇開發板及空的樣本即可。



Step02.製作背景/文字/按鈕

這是這次要做的畫面

1.插入背景
 

這邊,我是根據螢幕大小自己用小畫家畫一個240x320的白色圖片,並加入專案,加入後選擇匯入的圖片即可 


2.插入文字

依據所想擺放位置擺放即可, 記得要放兩個並修改名稱


3.插入按鈕



Step03.建立觸發事件

這邊已LED_ON為範例,Trigger訊號主要選擇按鈕觸發,並指定對應按鈕,action選擇Call new virtual function ,Function Name命名一個比較清楚的名稱,到時候加程式碼時會用到,這邊我是建立LED_ON及LED_OFF兩個,個別對應開關LED的動作。 

 

Step04.產生專案程式碼

 


Step05.匯入TouchGFX 產生的STM32 CUBE IDE的專案 

Open Projects from File System

 選擇STM32CubeIDE

 確認專案資料夾有被讀取到,按下Finish



Step06.main.c 加入欲控制IO初始化

 先從專案資料夾中找到main.c並開啟,接著尋找static void MX_GPIO_Init(void)

接下來加入LED燈的IO初始化,由於我已經先查好電路圖了,腳位名稱為PG13 在

static void MX_GPIO_Init(void)中加入下列程式碼

 

/*Configure GPIO pins : PG13 */

  GPIO_InitStruct.Pin = GPIO_PIN_13;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Pull = GPIO_PULLUP;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

  HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);

  HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET); 

 如下圖


Step07.Model.hpp/Model.cpp 加入控制函式

 Model.hpp / Model.cpp檔案路徑

 

1. Model.hpp 宣告下面函式

void GPIO_HIGH();

void GPIO_LOW(); 

加入位置如下圖 

 


 

2. Model.cpp 實作功能

void Model::GPIO_HIGH(){
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_SET);
}
void Model::GPIO_LOW(){
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET);
}

 加入位置如下圖 

 

Step08.Screen1Preseenter.hpp/Screen1Preseenter.cpp 加入控制函式

Screen1Preseenter.cpp  檔案路徑

1.Screen1Preseenter.hpp 加入程式碼

virtual void LED_ON();

virtual void LED_OFF();  


2. Screen1Preseenter.cpp 加入程式碼 

void Screen1Presenter::LED_ON()
{
model->GPIO_HIGH();
}
void Screen1Presenter::LED_OFF()
{
model->GPIO_LOW();
}

加入完成後如下圖 


Step09.Screen1View.hpp/Screen1View.cpp加入控制函式 

Screen1View.cpp檔案路徑

我們可以看到Screen1View.hpp 中的宣告裡面有我們在TouchGFX 建立的虛擬函式,LED_ON()、LED_OFF(),如下圖



 接下來要去Screen1View.cpp中實作,LED_ON()及LED_OFF(),程式碼如下


void Screen1View::LED_ON()
{
presenter->LED_ON();
}
void Screen1View::LED_OFF()
{
presenter->LED_OFF();
}

加入完成後如下圖


Step10.燒錄程式碼進開發板

 


肆、結果 


希望各位都可以成功! 

參考資料

打賞按讚