娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM32 TouchGFX部分控件功能測試

發布者:心滿意足最新更新時間:2024-08-22 來源: elecfans關鍵字:STM32  TouchGFX 手機看文章 掃描二維碼
隨時隨地手機看文章

我這次主要測試了TextArea,界面按鍵響應、動態圖形【dynamicgraph】、模擬時鐘【Analog Clock】、進度條顯示以及軟件上添加虛擬函數的實現。涉及的界面有下面幾個:【僅為測試,界面美丑略過】

ab1931b0-21c6-11ed-ba43-dac502259ad0.png

ab44a8ea-21c6-11ed-ba43-dac502259ad0.png

ab67a76e-21c6-11ed-ba43-dac502259ad0.png

ab8642c8-21c6-11ed-ba43-dac502259ad0.png

第一個要注意的地方。

我使用的IDE是STM32CubeIDE。當我在相應hpp頭文件里添加虛擬函數聲明時,需要在IDE環境里專門對該頭文件做個save操作,不然在cpp函數里寫好相應函數后編譯時總提示沒有做函數聲明。 舉個例子說下,比方我要在Screen1View.cpp寫一個IncDuty()函數。

abad5de0-21c6-11ed-ba43-dac502259ad0.png

我們需在其對應的頭文件里加上虛擬函數的聲明。在頭文件里添加了該虛擬函數聲明后,需要手動對該文件做個SAVE操作【File菜單下選擇Save】,否則老是編譯出錯,提示函數無聲明,即像下面提示:

abd27080-21c6-11ed-ba43-dac502259ad0.png

但別的cpp文件修改后倒不用單獨做save操作,直接編譯即可。這個地方因為要操作的文件較多,我多次忘記,直到編譯提醒才知道。【不知該問題是否跟IDE有關?我沒測試別的IDE。反正提醒下吧。】

第2個要注意的地方,我這里通過TouchGFXdesigner的文本區域控件【textarea】顯示STM32的某通道ADC轉換值,用到了浮點。

abf32d84-21c6-11ed-ba43-dac502259ad0.png

剛開始我用的是這個函數:

Unicode::snprintf(textArea1Buffer,TEXTAREA1_SIZE, '%f',AdcResult);

結果總是出不來,但當我將AdcResult改為整型變量,通過%d可以顯示正確結果。先懷疑過IDE方面浮點功能相關配置,經檢查沒問題。后來到TouchGFX在線服務站點搜索snprintf才有新的發現,如下圖所示:

ac121ca8-21c6-11ed-ba43-dac502259ad0.png

看來我的函數用錯了,使用浮點有另外一個輸出函數,即:

Unicode::snprintfFloat(textArea1Buffer, TEXTAREA1_SIZE,'%2.4f', AdcResult);

第3個要注意的地方,也是跟上面textarea輸出顯示有關的問題。

ac2d8218-21c6-11ed-ba43-dac502259ad0.png

在它的屬性那里有個Auto-size的選項,勾選與不勾選的實現代碼是不一樣的。一般為了簡單點,可以不做勾選,自己手動拉個合適大小的框來顯示字符及數據。比方還是以上面顯示ADC輸出電壓值為例,其實現代碼如下:

void Screen2View:: DispAdcValue()

{

Unicode::snprintfFloat(textArea1Buffer,TEXTAREA1_SIZE,'%2.4f', AdcResult);

//textArea1.resizeToCurrentText();

//memset(textArea1Buffer,'?',strlen(....));

textArea1.invalidate();

}

如果說你希望勾選,你的代碼就將上面的屏蔽語句加上即可,有興趣可以自行試試。

再就是那個動態圖形顯示那個地方,顯示的點數及修改樣點值的頻率都是可以調整的。我這里是讓它動態顯示一路PWM輸出的方波,為了實現它,我在這個地方做了些來回調試才實現比較好的效果。

另外,我在組織模擬時鐘代碼時遇到的一個小問題。我用到Model::Tick里的modelListener功能。

有個地方本來應該是view.UpdateClock(hours,minutes,seconds);我看庫里面絕大部分單詞的首字母都是大寫的,我就慣性地將view的首字母寫成大寫V了,編譯沒有直接提示出錯,但就是結果出不來。這里各種API函數很多,初次使用者對他們都較陌生,這種比較隱蔽的問題難免會碰上。

我順便把測試中用到的幾個跟GUI這邊有關的函數實現代碼也貼過來,供有需要的人參考。

modelListener->UpdateClock(sTime.Hours,sTime.Minutes,sTime.Seconds);

analogClock1.setTime24Hour(sTime1.Hours,sTime1.Minutes,sTime1.Seconds);

void Screen2View:: DispAdcValue()//基于textarea控件固定寬度顯示數據

{

//Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE,'%d?u?s?', AdcResult);

Unicode::snprintfFloat(textArea1Buffer,TEXTAREA1_SIZE, '%2.4f', AdcResult);

//textArea1.resizeToCurrentText();

//memset(textArea1Buffer,'?',…..);

textArea1.invalidate();

}

void Screen3View::UpdateCnt() //For progress Bar

{

if (UpdateCNT> 2000) {UpdateCNT = 0;}

//UpdateCNT comesfrom Timer Interrupt

textProgress1.setValue(UpdateCNT);

circleProgress1.setValue(UpdateCNT);

imageProgress1.setValue(UpdateCNT);

}

voidScreen1View::IncDuty() //For TIM3-CH1

{

CCRValue+=100;

if (CCRValue > 50000)

{

TIM3->CCR1 = 50000;

}

else

{

TIM3->CCR1 = CCRValue;

}

}

voidScreen1View::DecDuty()//For TIM3-CH1

{

CCRValue-=100;

if (CCRValue <0000)

{

CCRValue = 0 ;

TIM3->CCR1 = 000;

}

else

{

TIM3->CCR1 = CCRValue;

}

}

voidScreen1View:: ModifyGraph() //forDynamic grahph

{

uint16_t temp;

temp = GPIOB->IDR & 0x0010;

if (temp==0)

{

dynamicGraph1.addDataPoint(0);

// dynamicGraph1.invalidate();

}

else

{

dynamicGraph1.addDataPoint(99);

// dynamicGraph1.invalidate();

}

}

最后補充下,當我加入第4個頁面屏的內容時,電腦上模擬下還行,基于STM32F429開發板已經沒法正常穩定運行了,畢竟資源有限。當然,不同的人設計4個頁面所涉及的內容及任務數可能大相徑庭,可能的結果這里不好說絕對。不過,我的測試過程中運行上文中提到的前3個頁面內容及功能是沒有問題的。


關鍵字:STM32  TouchGFX 引用地址:STM32 TouchGFX部分控件功能測試

上一篇:基于STM32單片機的搖頭風扇設計
下一篇:STM32 Step-by-Step如何加快開發速度

推薦閱讀最新更新時間:2025-06-30 14:32

基于STM32的(NB-IOT(BC26))溫濕度監測系統
閑來無事,用手頭STM32做個項目。 成品功能:STM32采集溫度、濕度數據,顯示在屏幕上,通過NB-IOT(BC26)模塊連接阿里云物聯網平臺接受數據并實時監控。 材料 STM32ZET6開發板(戰艦V3) TFT顯示屏(戰艦有我用的2.7寸的) NB-IOT(BC26)模塊 DHT11溫濕度模塊 杜邦線 用keil5進行開發 開始制作。 制作過程 首先從板子測溫濕度開始 DHT11溫濕度模塊 原子哥有DHT11例程,所以直接在此基礎上進行開發 下載上之后這是效果。 阿里云物聯網平臺 先到阿里云物聯網平臺注冊一個設備。 進入阿里云官網搜索物聯網平臺,現在可以免費注冊一個。 點擊設備接入服務 在這
[單片機]
基于<font color='red'>STM32</font>的(NB-IOT(BC26))溫濕度監測系統
STM32如何確定執行哪個中斷函數
如下面所示: NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //NRF24L01 中斷響應 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //搶占優先級 0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //子優先級為1 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能 NVIC_Init(&NVIC_InitStructure); 則對應的中斷函數就是 STM3210x_
[單片機]
【eBox生態圈】連載一:簡化STM32的編程之eBox
STM32目前已經成為一款性價比相當高的單片機控制解決方案,由于STM32本身功能比較全面,備受大家的青睞,網絡上有這相當全面的資料,不管是新手還是老鳥都可以通過一個開發板的學習來了解STM32的基本編程思路。但是總體感覺STM32的編程比較復雜,難以記憶或者理解。設置任何一個外設都要初始化相當多的寄存器。靠記憶已經無法完成,經常是是復制一段配置代碼再修改成自己需要的,或者不斷的查詢復雜的手冊和編程指南來完成。用起來總是不能像Arduino那樣方便。如何解決STM32編程復雜的問題已經成為一個相當大的問題。 目前編程所遇到的問題: 外設問題:STM32官方庫在一定程度上降低了編程的復雜度。提供了全面的API接口,可以支持任何一
[單片機]
STM32的12位ADC過采樣實現16位分辨率
1.什么是過采樣 過采樣技術是一種以犧牲采樣速度來提高ADC分辨率的技術。部分STM32單片機是支持硬件過采樣的,如STM32G0系列。通過過采樣,可以將12位的ADC提升到16位,非常實用。 根據過采樣技術,每提高1位ADC分辨率,需要增加4倍的采樣率。也就是說1次采樣是12Bit,4次是13Bit,16次是14Bit,64次是15Bit,256次是16Bit,如果要更高分辨率,那么STM32的硬件過采樣就無能為力了。 過采樣主要通過配置ADC_SMPR寄存器的下面幾位即可實現,配置移位位數、過采樣倍數以及使能位。如下: 最大可配置為256倍過采樣,實現16位分辨率。當采用256倍過采樣時,得到的結果是20位的,但ADC
[單片機]
<font color='red'>STM32</font>的12位ADC過采樣實現16位分辨率
STM32單片機的工作原理和調試方法
一、STM32單片機的概述 STM32系列單片機是由意法半導體(STMicroelectronics)公司開發的基于ARM Cortex-M內核的32位微控制器。它們具有高性能、低功耗、高集成度和易用性等特點,廣泛應用于各種電子產品和系統。 二、STM32單片機的工作原理 1.存儲器結構:STM32系列單片機的存儲器結構包括程序存儲器、數據存儲器和特殊功能寄存器。程序存儲器用于存儲程序代碼,數據存儲器用于存儲程序運行時的數據,特殊功能寄存器用于實現各種特殊功能。 2.時鐘系統:STM32系列單片機的時鐘系統基于ARM Cortex-M內核。它們使用外部晶體或陶瓷諧振器來提供時鐘源,并通過鎖相環(PLL)將時鐘頻率提高到12MHz或
[單片機]
晶振損壞了,STM32還能正常運行?
問題: 該問題由某客戶提出,發生在STM32F103VDT6器件上。據其工程師講述:在其產品的設計中,STM32的HSE外接8MHz的晶體產生振蕩,然后通過STM32內部的PLL倍頻到72MHz,作為STM32的系統時鐘,驅動芯片工作。在STM32片外有專用的看門狗芯片,監控STM32的運行。STM32內部的軟件會在STM32的某個管腳上產生脈沖來復位看門狗。一旦STM32沒有及時的產生脈沖來復位門狗,則看門狗會認為STM32運行不正常,從而復位STM32。在對該產品做可靠性測試時,進行了對看門狗監控時鐘失效能力的測試。 測試的方法是:將HSE外接的晶體的兩個端子接地,使其停止振蕩,從而驗證看門狗能否做出對STM32的做出復位
[單片機]
晶振損壞了,<font color='red'>STM32</font>還能正常運行?
stm32位帶操作有什么用
STM32位帶操作是一種在ARM Cortex-M微控制器中使用的特殊技術,它允許同時處理多個位,并且可以提高代碼效率和性能。在這篇文章中,我將詳細介紹STM32位帶操作的原理、用途以及如何使用它。 一、STM32位帶操作的原理 位帶別名區 在STM32微控制器中,每個外設寄存器都有32位,其中每個位都可以被獨立訪問。位帶操作使用了ARM Cortex-M中的位帶別名區(Bit Band Alias Region)技術,該區域位于內存映射地址空間的末尾部分,用于訪問特定位的寄存器。位帶別名區通過對特定位進行編址,使得每個位都擁有一個獨立的內存地址。 位帶操作的映射 位帶操作利用了位帶別名區的映射關系,將寄存器位的操作映射到了單
[單片機]
盤點STM32的國產替代者有哪些
北京兆易創新-GD32系列 GD32作為中國32位通用MCU領域的主流之選,以累計超過2億顆的出貨數量、超過1萬的用戶數量、20個系列300余款產品型號選擇的廣闊應用覆蓋率穩居市場前列。GD32使用的是Cortex-M3內核,型號做到了與STM32相同型號的全兼容,方便替換,主頻頻率更高。 GD32F103是GD早期的產品,GD32E103和GD32F303是對GD32F103的升級和優化,所以4者是兼容的,雖然內核不同,但是通用外設幾乎很少涉及到內核部分,在時間急迫的情況下可以使用ST的庫開發。 一、相同點 1)外圍引腳PIN TO PIN兼容,每個引腳上的復用功能也完全相同。 2)芯片內部寄存器、外部IP寄存器地址和邏輯地址完
[單片機]
盤點<font color='red'>STM32</font>的國產替代者有哪些
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 阳江市| 通许县| 大方县| 平果县| 鸡泽县| 泰宁县| 临西县| 绥滨县| 遂平县| 兴宁市| 高陵县| 延边| 登封市| 定西市| 宽甸| 南皮县| 临汾市| 高邮市| 肥东县| 驻马店市| 齐齐哈尔市| 松滋市| 宁海县| 灌云县| 睢宁县| 闻喜县| 融水| 金沙县| 铅山县| 凌海市| 红桥区| 河北区| 始兴县| 华安县| 阿拉善左旗| 农安县| 阿坝县| 胶州市| 望都县| 泽普县| 汤阴县|