在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32 TouchGFX部分控件功能測(cè)試

茶話MCU ? 來(lái)源:茶話MCU ? 作者:茶話MCU ? 2022-08-22 11:12 ? 次閱讀

ST公司推出的用于圖形界面開發(fā)的 TouchGFX Designer已經(jīng)升級(jí)到4.20了。這兩天我利用手頭的STM32F429Discovery板對(duì)Touchgfx提供的部分控件功能做了些測(cè)試,把這個(gè)過程中遇到的一些問題做些整理,以備忘并順便分享。

我這次主要測(cè)試了TextArea,界面按鍵響應(yīng)、動(dòng)態(tài)圖形【dynamicgraph】、模擬時(shí)鐘Analog Clock】、進(jìn)度條顯示以及軟件上添加虛擬函數(shù)的實(shí)現(xiàn)。涉及的界面有下面幾個(gè):【僅為測(cè)試,界面美丑略過】

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

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

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

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

第一個(gè)要注意的地方。

我使用的IDE是STM32CubeIDE。當(dāng)我在相應(yīng)hpp頭文件里添加虛擬函數(shù)聲明時(shí),需要在IDE環(huán)境里專門對(duì)該頭文件做個(gè)save操作,不然在cpp函數(shù)里寫好相應(yīng)函數(shù)后編譯時(shí)總提示沒有做函數(shù)聲明。 舉個(gè)例子說(shuō)下,比方我要在Screen1View.cpp寫一個(gè)IncDuty()函數(shù)。

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

我們需在其對(duì)應(yīng)的頭文件里加上虛擬函數(shù)的聲明。在頭文件里添加了該虛擬函數(shù)聲明后,需要手動(dòng)對(duì)該文件做個(gè)SAVE操作【File菜單下選擇Save】,否則老是編譯出錯(cuò),提示函數(shù)無(wú)聲明,即像下面提示:

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

但別的cpp文件修改后倒不用單獨(dú)做save操作,直接編譯即可。這個(gè)地方因?yàn)橐僮鞯奈募^多,我多次忘記,直到編譯提醒才知道。【不知該問題是否跟IDE有關(guān)?我沒測(cè)試別的IDE。反正提醒下吧。】

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

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

剛開始我用的是這個(gè)函數(shù):

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

結(jié)果總是出不來(lái),但當(dāng)我將AdcResult改為整型變量,通過%d可以顯示正確結(jié)果。先懷疑過IDE方面浮點(diǎn)功能相關(guān)配置,經(jīng)檢查沒問題。后來(lái)到TouchGFX在線服務(wù)站點(diǎn)搜索snprintf才有新的發(fā)現(xiàn),如下圖所示:

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

看來(lái)我的函數(shù)用錯(cuò)了,使用浮點(diǎn)有另外一個(gè)輸出函數(shù),即:

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

第3個(gè)要注意的地方,也是跟上面textarea輸出顯示有關(guān)的問題。

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

在它的屬性那里有個(gè)Auto-size的選項(xiàng),勾選與不勾選的實(shí)現(xiàn)代碼是不一樣的。一般為了簡(jiǎn)單點(diǎn),可以不做勾選,自己手動(dòng)拉個(gè)合適大小的框來(lái)顯示字符及數(shù)據(jù)。比方還是以上面顯示ADC輸出電壓值為例,其實(shí)現(xiàn)代碼如下:

void Screen2View:: DispAdcValue()

{

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

//textArea1.resizeToCurrentText();

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

textArea1.invalidate();

}

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

再就是那個(gè)動(dòng)態(tài)圖形顯示那個(gè)地方,顯示的點(diǎn)數(shù)及修改樣點(diǎn)值的頻率都是可以調(diào)整的。我這里是讓它動(dòng)態(tài)顯示一路PWM輸出的方波,為了實(shí)現(xiàn)它,我在這個(gè)地方做了些來(lái)回調(diào)試才實(shí)現(xiàn)比較好的效果。

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

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

我順便把測(cè)試中用到的幾個(gè)跟GUI這邊有關(guān)的函數(shù)實(shí)現(xiàn)代碼也貼過來(lái),供有需要的人參考。

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

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

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

{

//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();

}

}

最后補(bǔ)充下,當(dāng)我加入第4個(gè)頁(yè)面屏的內(nèi)容時(shí),電腦上模擬下還行,基于STM32F429開發(fā)板已經(jīng)沒法正常穩(wěn)定運(yùn)行了,畢竟資源有限。當(dāng)然,不同的人設(shè)計(jì)4個(gè)頁(yè)面所涉及的內(nèi)容及任務(wù)數(shù)可能大相徑庭,可能的結(jié)果這里不好說(shuō)絕對(duì)。不過,我的測(cè)試過程中運(yùn)行上文中提到的前3個(gè)頁(yè)面內(nèi)容及功能是沒有問題的。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10923

    瀏覽量

    357576
  • TouchGFX
    +關(guān)注

    關(guān)注

    1

    文章

    42

    瀏覽量

    13284
  • STM32F429
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    10792

原文標(biāo)題:STM32 TouchGFX 部分控件測(cè)試備忘

文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TouchGFX助力STM32打造高效GUI顯示方案

    TouchGFX 是一款針對(duì) STM32 微控制器優(yōu)化的先進(jìn)免費(fèi)圖形軟件框架。 TouchGFX 利用 STM32 圖形功能和架構(gòu),通過創(chuàng)建
    的頭像 發(fā)表于 01-13 15:16 ?127次閱讀
    <b class='flag-5'>TouchGFX</b>助力<b class='flag-5'>STM32</b>打造高效GUI顯示方案

    接口測(cè)試屬于功能測(cè)試嗎為什么

    接口測(cè)試功能測(cè)試是軟件測(cè)試中的兩種不同類型,它們之間有一定的聯(lián)系,但也存在明顯的區(qū)別。本文將詳細(xì)討論接口測(cè)試
    的頭像 發(fā)表于 05-30 14:57 ?522次閱讀

    功能測(cè)試主要做什么 功能測(cè)試包含哪些測(cè)試

    功能測(cè)試是軟件測(cè)試的一個(gè)重要組成部分,主要目的是驗(yàn)證軟件的功能是否滿足需求規(guī)格說(shuō)明書(SRS)中定義的
    的頭像 發(fā)表于 05-29 16:05 ?5876次閱讀

    功能測(cè)試和接口測(cè)試的區(qū)別

    的一個(gè)重要組成部分,它主要關(guān)注軟件的功能需求是否得到滿足。功能測(cè)試的目的是驗(yàn)證軟件是否按照需求規(guī)格說(shuō)明書(SRS)中描述的功能正常工作。
    的頭像 發(fā)表于 05-29 16:02 ?1023次閱讀

    TouchGFX 中 MCU 負(fù)載的計(jì)算過程介紹

    TouchGFX Desinger 下載的 TBS(TouchGFX Board Setup)大都帶有 MCU 的 負(fù)載計(jì)算功能,那么如何在自己的板子上增加 MCU 負(fù)載計(jì)算功能
    的頭像 發(fā)表于 05-24 13:24 ?541次閱讀
    <b class='flag-5'>TouchGFX</b> 中 MCU 負(fù)載的計(jì)算過程介紹

    stm32cubemx5.0,stm32l496G怎么沒有touchgfx選項(xiàng)?

    最新版的stm32cubemx5.0,stm32l496G怎么沒有touchgfx選項(xiàng),
    發(fā)表于 04-23 07:04

    STM32F769I-DISCO開發(fā)板跑TouchGFX里的demo卡死黑屏的原因?

    買的官方的STM32F769-DISCO開發(fā)板,下載SDK里的官方例程跑的很流暢。自己在TouchGFX上找到STM32F769-DISCO的demo后,生成的代碼、cubeMX配置、keil工程
    發(fā)表于 04-12 07:46

    TouchGFX G0設(shè)備如何使用物理按鍵切換頁(yè)面?

    我使用STM32 G070RBT6 + 320*240的SPI屏幕(無(wú)觸摸),想通過按鍵切換頁(yè)面,在TouchGFX中可以設(shè)置使用外部按鍵按下作為觸發(fā),但是我不知道我程序中在哪里告訴TouchGFX我的哪個(gè)按鍵按下了?
    發(fā)表于 04-09 07:13

    STM32L476使用TouchGfx,編譯會(huì)爆空間的原因?

    現(xiàn)在工作需要在STM32L476上使用TouchGFX。 現(xiàn)在Flash 內(nèi)部是1M,RAM是128KB---屏幕分辨率是:800x480, 現(xiàn)在用cubeMX選擇這樣的分辨率,編譯會(huì)爆空間。
    發(fā)表于 04-09 06:38

    STM32L4R9移植touchgfx GUI顯示控件異常花屏的原因?

    移植touchgfx工程后 (1)開啟GUI出顯示異常,問題不能確定,懷疑是dma2d送數(shù)據(jù)不正確,目前未找到touchgfx的填充界面函數(shù)在那里??? (2)關(guān)閉GUI顯示函數(shù),直接調(diào)用底層dma2d寫的清屏函數(shù)可以顯示正常!!! 請(qǐng)大佬們幫幫我0.0多謝,幫忙分析一下
    發(fā)表于 04-07 08:30

    TouchGFX+STM32CUBEMX+STM32F429IGT6運(yùn)行異常的原因?怎么解決?

    使用touchgfx+stm32CubeMx生成適合正點(diǎn)原子阿波羅開發(fā)板的工程文件不能正常運(yùn)行。首先使用cube生成了LTDC+DMA2D+FMC+FreeRTOS配置,正常點(diǎn)亮了屏幕。可以
    發(fā)表于 03-25 06:38

    將程序通過touchgfx designer下載到開發(fā)板,無(wú)法實(shí)現(xiàn)觸摸功能怎么處理?

    用NUCLEO-G071RB和X-NUCLEO-GFX01M1做觸摸顯示實(shí)驗(yàn),希望點(diǎn)擊按鈕能跳轉(zhuǎn)到相關(guān)界面,在touchgfx designer模擬仿真可以實(shí)現(xiàn),但是將程序通過touchgfx
    發(fā)表于 03-25 06:33

    touchgfx swipeContainer控件加入ScrollableContainer控件;SwipeContainer空間就用不了是哪里的問題?

    touchgfx 問題 :swipeContainer控件加入ScrollableContainer控件;SwipeContainer空間就用不了了,只能執(zhí)行S
    發(fā)表于 03-22 11:48

    TouchGFX怎樣任意修改控件大小?

    TouchGFX怎樣任意修改控件大小,而不是只能選擇固定的大小?
    發(fā)表于 03-18 07:17

    touchgfx如何改變圖片顏色?

    touchgfx是否有提供函數(shù)可以直接改變image控件中圖片的顏色,類似LVGL中圖片控件的recolor函數(shù),對(duì)圖片重新著色成某種純色圖片,如果touchgfx沒有這種函數(shù),是否有
    發(fā)表于 03-15 06:24
    主站蜘蛛池模板: 国产黄色在线视频 | 欧美成人eee在线 | 日本一区二区在线不卡 | 国产美女动态免费视频 | 99久久精品费精品国产一区二 | 五月丁香 | 在线日本人观看成本人视频 | 婷婷影院在线综合免费视频 | 99久久免费精品国产免费高清 | 影视精品网站入口 | 欧洲一级鲁丝片免费 | 男人扒开美女尿口无遮挡图片 | 成人网男女啪啪免费网站 | 国产成人乱码一区二区三区 | 亚洲午夜久久久精品影院 | 性免费视频 | 射吧亚洲 | 成人夜夜 | 色射色| 日韩一级片视频 | 国产综合13p | 精品一区二区三区在线视频 | 欧美地区一二三区 | 老湿影院免费体验区 | 久久久免费精品视频 | 天天操综合视频 | 日本特黄特黄刺激大片免费 | 特级毛片免费视频观看 | 天天看片天天爽 | 五月天免费在线播放 | 激情文学综合 | 成人黄网大全在线观看 | 亚洲网在线 | 九九视频只有精品 | 美女扒开尿口给男人桶视频免费 | 6月婷婷 | 欧美极品| 欧美精品综合一区二区三区 | 又黄又湿又爽吸乳视频 | 娇妻被黑人蹂躏 | 最新亚洲情黄在线网站 |