chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

使用恩智浦FRDM-MCXN947開發(fā)板GUI控制電機(jī)

安富利 ? 來源:與非網(wǎng) ? 2025-09-19 15:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

恩智浦“FRDM-MCXN947”評(píng)測(cè)活動(dòng)由安富利和與非網(wǎng)協(xié)同舉辦。本篇內(nèi)容由與非網(wǎng)用戶發(fā)布,已獲轉(zhuǎn)載許可。原文可在與非網(wǎng)(eefocus)工程師社區(qū)查看。

背景

終于來到了最后一個(gè)任務(wù),設(shè)計(jì)一個(gè)基于LVGL的GUI應(yīng)用,可以在UI上拖動(dòng)滑動(dòng)條控制電機(jī)轉(zhuǎn)速,點(diǎn)擊按鍵切換點(diǎn)擊旋轉(zhuǎn)方向。

GUI設(shè)計(jì)采用NXP出品的Gui Guider工具,我電腦上安裝的版本是v1.8.0版本。

界面設(shè)計(jì)

打開Gui Guider工具,當(dāng)前v1.8.0只支持lvgl v8.3.10版本,然后選擇模擬器,屏幕分辨率為 320x240。

01Gui Guider界面設(shè)計(jì)

創(chuàng)建工程時(shí)沒有截圖,在打開工程后以在下方狀態(tài)欄找到Project控件點(diǎn)擊展開,工程屬性如下圖所示:

f9d9d64c-8d5c-11f0-8c8f-92fbcf53809c.png

設(shè)計(jì)的最終界面如下圖所示,屏幕最上方是標(biāo)題MCXN947 Motor Control,中間是一個(gè)NXP圖片,再往下是3個(gè)按鍵,分別控制電機(jī)左轉(zhuǎn)、停止、右轉(zhuǎn),最下方是兩個(gè)文字標(biāo)簽和一個(gè)活動(dòng)條,左右文字標(biāo)簽分別在電機(jī)左轉(zhuǎn)和右轉(zhuǎn)的時(shí)候單獨(dú)顯示。

fa35c4de-8d5c-11f0-8c8f-92fbcf53809c.png

我最早接觸Gui Guider是v1.3.1版本,那個(gè)時(shí)候Gui Guider軟件界面和當(dāng)前版本有挺大差異的。當(dāng)前軟件版本的設(shè)計(jì)界面如上圖所示:

UI編輯區(qū),點(diǎn)擊左邊的星星圖標(biāo)展開或者收縮控件列表;以前的版本是固定在左側(cè)的;

界面差異很大的是Event區(qū),以前放在上圖(4)的位置,和Attributes各自成一個(gè)Tab,如今挪到下方的狀態(tài)欄,一開始還找不到,令人著急;

此外添加Event的方式也大有改善,可以給一個(gè)事件添加多個(gè)目標(biāo),參見下圖。

02設(shè)置 Event

當(dāng)前版本添加Event的方式很優(yōu)秀,可以給一個(gè)對(duì)象添加多個(gè)事件,每個(gè)事件可以作用于多個(gè)目標(biāo)控件,每個(gè)目標(biāo)控件可以修改多個(gè)屬性。

下圖演示了Right按鍵添加clicked時(shí)間,作用于3個(gè)目標(biāo)控件,并且添加了一個(gè)自定義代碼,詳細(xì)的描述是:

Right按鍵點(diǎn)擊時(shí),標(biāo)簽label_speed_left不可見;

Right按鍵點(diǎn)擊時(shí),標(biāo)簽label_speed_right變成可見狀態(tài);

Right按鍵點(diǎn)擊時(shí),滑動(dòng)條slider_speed添加了一個(gè)標(biāo)志,即LV_OBJ_FLAG_CLICKABLE,即可以點(diǎn)擊(我的代碼邏輯是Stop按鍵單擊后不允許滑動(dòng)條拖動(dòng),再點(diǎn)擊Left或者Right按鍵之后才可以拖動(dòng))。

fa97b036-8d5c-11f0-8c8f-92fbcf53809c.png

雖說Gui Guider方便了LVGL UI設(shè)計(jì),但是也有一些不足之處,我的使用經(jīng)驗(yàn)如下:

部分控件支持的屬性不夠豐富,例如給目標(biāo)slider控件設(shè)置value值,居然找不到;

添加custom_code,代碼自動(dòng)補(bǔ)全功能不夠完整;

添加了目標(biāo)控件之后不能改變順序,這一點(diǎn)還是有一些必要的,因?yàn)閏ustom_code依賴一些控件狀態(tài),對(duì)代碼順序是有要求的;

不能從外部修改generated目錄下的文件,因?yàn)槊看紊啥紩?huì)被Gui Guider生成的文件覆蓋掉,這個(gè)還有一些缺陷,畢竟在編輯器里寫代碼要比在Gui Guider里寫代碼速度快。

fa97b036-8d5c-11f0-8c8f-92fbcf53809c.png

03模擬器運(yùn)行

在UI設(shè)計(jì)完畢,現(xiàn)在電腦運(yùn)行模擬器,如下圖點(diǎn)擊菜單欄上的編譯按鍵,選擇C語言版本,編譯通過之后彈出模擬器界面。

fb4d26fa-8d5c-11f0-8c8f-92fbcf53809c.png

編譯通過,運(yùn)行模擬器。

fbaa0cc6-8d5c-11f0-8c8f-92fbcf53809c.png

代碼編寫

上面說明Event添加方式不夠靈活,還是需要手動(dòng)修改代碼。

我設(shè)計(jì)的GUI有以下邏輯:

界面初始化之后,滑動(dòng)條數(shù)值為0不允許滑動(dòng),且左右兩個(gè)速度標(biāo)簽是隱藏的,只有當(dāng)電機(jī)左轉(zhuǎn)或者右轉(zhuǎn)時(shí)才單獨(dú)顯示一個(gè)對(duì)應(yīng)的標(biāo)簽;

只有點(diǎn)擊Left或者Right才能激活滑條,然后拖動(dòng)滑條控制電機(jī)轉(zhuǎn)動(dòng)并調(diào)速;

點(diǎn)擊Stop讓滑條歸零,兩個(gè)速度標(biāo)簽隱藏,并且電機(jī)停轉(zhuǎn)。

01初始化界面

初始化界面的代碼放在custom.c文件中,代碼如下,添加了兩個(gè)變量,分別表示電機(jī)轉(zhuǎn)速和電機(jī)轉(zhuǎn)動(dòng)方向:

/**********************
* STATIC VARIABLES
**********************/
uint32_t speed_value =0;
uint32_t direction =DIR_LEFT;


/**
* Create a demo application
*/


void custom_init(lv_ui *ui)
{
/* Add your codes here*/


// 滑條不允許滑動(dòng)
 lv_obj_clear_flag(ui->pageStatic_slider_speed, LV_OBJ_FLAG_CLICKABLE);


// 兩個(gè)速度標(biāo)簽不顯示
 lv_obj_add_flag(ui->pageStatic_label_speed_left, LV_OBJ_FLAG_HIDDEN);
 lv_obj_add_flag(ui->pageStatic_label_speed_right, LV_OBJ_FLAG_HIDDEN);
}

02按鍵事件

三個(gè)按鍵和一個(gè)滑條的事件都放在events_init.c文件中。

2.1滑條滑動(dòng)事件

首先獲取滑條位置轉(zhuǎn)換為電機(jī)速度,保存在變量speed_value中;然后根據(jù)電機(jī)方向變量direction的值,分別控制電機(jī)左轉(zhuǎn)或右轉(zhuǎn),并分別顯示左右標(biāo)簽頁顯示電機(jī)速度。

staticvoidpageStatic_slider_speed_event_handler(lv_event_t* e)
{
lv_event_code_tcode =lv_event_get_code(e);
switch(code) {
  caseLV_EVENT_VALUE_CHANGED:
  {
   speed_value =lv_slider_get_value(guider_ui.pageStatic_slider_speed);


  switch(direction) {
    caseDIR_LEFT:
   lv_label_set_text_fmt(guider_ui.pageStatic_label_speed_left,"%d%%", speed_value);
   motor_left(speed_value);
   break;


    caseDIR_RIGHT:
   lv_label_set_text_fmt(guider_ui.pageStatic_label_speed_right,"%d%%", speed_value);
   motor_right(speed_value);
   break;


   default:
   break;
   }
  break;
  }
 default:
 break;
 }
}

2.2left按鍵事件

單擊Left按鍵,首先取消左側(cè)的速度標(biāo)簽隱藏屬性,即讓其可見;

讓右側(cè)的速度標(biāo)簽頁隱藏;

讓滑條可以單擊;

改變速度方向變量為DIR_LEFT方向;

設(shè)置滑條數(shù)值為speed_value數(shù)值;

讓左側(cè)速度標(biāo)簽頁顯示速度;

調(diào)用motor_left(speed_value)函數(shù)讓電機(jī)向左轉(zhuǎn)動(dòng)并設(shè)置速度。

staticvoidpageStatic_btn_left_event_handler(lv_event_t* e)
{
lv_event_code_tcode =lv_event_get_code(e);
switch(code) {
  caseLV_EVENT_CLICKED:
  {
  lv_obj_clear_flag(guider_ui.pageStatic_label_speed_left, LV_OBJ_FLAG_HIDDEN);
  lv_obj_add_flag(guider_ui.pageStatic_label_speed_right, LV_OBJ_FLAG_HIDDEN);
  lv_obj_add_flag(guider_ui.pageStatic_slider_speed, LV_OBJ_FLAG_CLICKABLE);


   direction =DIR_LEFT;
  lv_slider_set_value(guider_ui.pageStatic_slider_speed, speed_value, LV_ANIM_ON);
  lv_label_set_text_fmt(guider_ui.pageStatic_label_speed_left,"%d%%", speed_value);


  motor_left(speed_value);
  break;
  }
 default:
 break;
 }
}

2.3right按鍵事件

Left按鍵事件,邏輯是反的,最后調(diào)用motor_right()函數(shù)讓電機(jī)向右轉(zhuǎn)動(dòng)并設(shè)置轉(zhuǎn)速。

staticvoidpageStatic_btn_right_event_handler(lv_event_t* e)
{
lv_event_code_tcode =lv_event_get_code(e);
switch(code) {
  caseLV_EVENT_CLICKED:
  {
  lv_obj_add_flag(guider_ui.pageStatic_label_speed_left, LV_OBJ_FLAG_HIDDEN);
  lv_obj_clear_flag(guider_ui.pageStatic_label_speed_right, LV_OBJ_FLAG_HIDDEN);
  lv_obj_add_flag(guider_ui.pageStatic_slider_speed, LV_OBJ_FLAG_CLICKABLE);
   direction =DIR_RIGHT;
  lv_slider_set_value(guider_ui.pageStatic_slider_speed, speed_value, LV_ANIM_ON);
  lv_label_set_text_fmt(guider_ui.pageStatic_label_speed_right,"%d%%", speed_value);


  motor_right(speed_value);
  break;
  }
 default:
 break;
 }
}

2.4stop按鍵

讓兩個(gè)速度標(biāo)簽都隱藏,設(shè)置速度變量為0,并設(shè)置滑條數(shù)值為0,且不允許拖動(dòng)滑條,最后調(diào)用motor_stop()讓電機(jī)停止轉(zhuǎn)動(dòng)。

staticvoidpageStatic_btn_stop_event_handler(lv_event_t* e)
{
lv_event_code_tcode =lv_event_get_code(e);
switch(code) {
  caseLV_EVENT_CLICKED:
  {
  lv_obj_add_flag(guider_ui.pageStatic_label_speed_left, LV_OBJ_FLAG_HIDDEN);
  lv_obj_add_flag(guider_ui.pageStatic_label_speed_right, LV_OBJ_FLAG_HIDDEN);


   speed_value =0;
  lv_slider_set_value(guider_ui.pageStatic_slider_speed, speed_value, LV_ANIM_ON);


  lv_obj_clear_flag(guider_ui.pageStatic_slider_speed, LV_OBJ_FLAG_CLICKABLE);


  motor_stop();
  break;
  }
 default:
 break;
 }
}

關(guān)于安富利

安富利是全球領(lǐng)先的技術(shù)分銷商和解決方案提供商,在過去一個(gè)多世紀(jì)里一直秉持初心,致力于滿足客戶不斷變化的需求。通過遍布全球的專業(yè)化和區(qū)域化業(yè)務(wù)覆蓋,安富利可在產(chǎn)品生命周期的每個(gè)階段為客戶和供應(yīng)商提供支持。安富利能夠幫助各種類型的公司適應(yīng)不斷變化的市場(chǎng)環(huán)境,在產(chǎn)品開發(fā)過程中加快設(shè)計(jì)和供應(yīng)速度。安富利在整個(gè)技術(shù)價(jià)值鏈中處于中心位置,這種獨(dú)特的地位和視角讓其成為了值得信賴的合作伙伴,能夠幫助客戶解決復(fù)雜的設(shè)計(jì)和供應(yīng)鏈難題,從而更快地實(shí)現(xiàn)營(yíng)收。

聲明:本文內(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)投訴
  • 恩智浦
    +關(guān)注

    關(guān)注

    14

    文章

    6027

    瀏覽量

    125353
  • GUI
    GUI
    +關(guān)注

    關(guān)注

    3

    文章

    688

    瀏覽量

    42323
  • 控制電機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    248

    瀏覽量

    18944
  • LVGL
    +關(guān)注

    關(guān)注

    1

    文章

    110

    瀏覽量

    4026

原文標(biāo)題:用戶測(cè)評(píng)(十):GUI控制電機(jī)

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    TFT適配LVGL實(shí)踐分享

    1前言說明本章通過FRDM-MCXN947開發(fā)板與正點(diǎn)原子的TFTLCD進(jìn)行實(shí)踐1.2模塊介紹硬件:FRDM-MCXN947開發(fā)板:該開發(fā)板
    的頭像 發(fā)表于 09-04 08:06 ?2565次閱讀
    TFT適配LVGL實(shí)踐分享

    MCX N23的官方評(píng)估FRDM-MCXN236詳解

    ,想必大家早已有所耳聞,NXP為以前的Kinetis系列以及最新的MCX系列都推出了FRDM板子,比如MCX系列的FRDM-MCXN947, FRDM-MCXA153,今天為大家介紹
    的頭像 發(fā)表于 11-14 09:43 ?2112次閱讀
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>MCX N23的官方評(píng)估<b class='flag-5'>板</b><b class='flag-5'>FRDM-MCXN</b>236詳解

    FRDM-MCXN947開發(fā)板部署DeepSeek大語言模型

    還在羨慕那些動(dòng)輒幾十GB顯存的AI大佬?今天,我們用一塊小小的FRDM-MCXN947開發(fā)板,就能讓你體驗(yàn)到與大語言模型暢聊的快感!誰說嵌入式設(shè)備只能閃爍LED?今天我們就要讓它"口吐蓮花"!
    的頭像 發(fā)表于 04-10 17:23 ?3104次閱讀
    在<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>FRDM-MCXN947</b><b class='flag-5'>開發(fā)板</b>部署DeepSeek大語言模型

    FRDM-MCXN947的純Linux命令行環(huán)境搭建

    10000-commandfile /mnt/MyNAS/walker/work/rt-thread/bsp/nxp/mcx/mcxn/frdm-mcxn947/flash.jlink\' 編寫flash.jlink燒錄文件
    發(fā)表于 07-28 22:55

    關(guān)于將Flash寫入FRDM-MCXN947的問題求解

    這次我想問一個(gè)關(guān)于使用 MCXN947 將 Flash 寫入另一個(gè)的問題。 我嘗試使用 FRDM-MCXN947 的寫入方法作為參考寫入此,但發(fā)生了錯(cuò)誤。 下面是當(dāng)時(shí)
    發(fā)表于 03-17 06:29

    FRDM-MCXN947在初始化lpI2C時(shí), I2C無法正常工作怎么解決?

    我正在使用 FRDM-MCXN947 開發(fā)板,發(fā)現(xiàn)在初始化 lpI2C 時(shí), I2C 無法正常工作。我的配置如圖所示。 我使用的配置基于演示。您能幫我檢查一下問題可能是什么嗎?謝謝。
    發(fā)表于 03-25 06:32

    富昌電子推薦兩款的MCX A和MCX N系列微控制

    富昌電子為您推薦的 MCX A 和 MCX N 系列微控制開發(fā)板 FRDM-MCXA153 和
    的頭像 發(fā)表于 05-09 16:44 ?1914次閱讀

    【上海】5月25日-基于MCX N系列MCU結(jié)合RT-Thread的應(yīng)用與實(shí)踐 線下培訓(xùn)

    基于FRDM-MCXN947和RT-Thread的動(dòng)手實(shí)踐,率先完成的同學(xué)有福利哦~同時(shí),我們還特別設(shè)置了現(xiàn)場(chǎng)交流環(huán)節(jié),RT-Thread和的資深技術(shù)工程師將
    的頭像 發(fā)表于 05-13 18:19 ?1909次閱讀
    【上?!?月25日-基于<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>MCX N系列MCU結(jié)合RT-Thread的應(yīng)用與實(shí)踐 線下培訓(xùn)

    FRDM-MCXN947開發(fā)實(shí)踐指南》上線啦

    RT-Thread率先支持NXPFRDM-MCXN947,并聯(lián)合半導(dǎo)體推出了NXPFRDM-MCXN947開發(fā)板評(píng)測(cè)活動(dòng)。測(cè)評(píng)活動(dòng)順利
    的頭像 發(fā)表于 05-13 18:19 ?2759次閱讀
    《<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>FRDM-MCXN947</b><b class='flag-5'>開發(fā)</b>實(shí)踐指南》上線啦

    使用VSCode調(diào)試FRDM MCXN947開發(fā)板

    想必關(guān)注MCXN947系列MCU的朋友們已經(jīng)知道板載MCXN947FRDM開發(fā)板已經(jīng)正式和大家見面了。
    的頭像 發(fā)表于 05-16 11:16 ?1578次閱讀
    使用VSCode調(diào)試<b class='flag-5'>FRDM</b> <b class='flag-5'>MCXN947</b><b class='flag-5'>開發(fā)板</b>

    新品MCX N系列線下培訓(xùn)來啦!LVGL、AI等超多精彩Demo演示,快來報(bào)名吧!

    基于FRDM-MCXN947和RT-Thread的動(dòng)手實(shí)踐,率先完成的同學(xué)有福利哦~同時(shí),我們還特別設(shè)置了現(xiàn)場(chǎng)交流環(huán)節(jié),RT-Thread和的資深技術(shù)工程師將
    的頭像 發(fā)表于 05-19 08:36 ?1866次閱讀
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>新品MCX N系列線下培訓(xùn)來啦!LVGL、AI等超多精彩Demo演示,快來報(bào)名吧!

    基于Label CIFAR10 image on FRDM-MCXN947例程實(shí)現(xiàn)鞋和帽子的識(shí)別

    前言 ? ? FRDM-MCXN947 ”評(píng)測(cè)活動(dòng)由安富利和與非網(wǎng)協(xié)同舉辦。本篇內(nèi)容由與非網(wǎng)用戶發(fā)布,已授權(quán)轉(zhuǎn)載許可。原文可在與非網(wǎng)(eefocus)工程師社區(qū)查看。 PART 0 1
    的頭像 發(fā)表于 01-13 09:18 ?961次閱讀
    基于Label CIFAR10 image on <b class='flag-5'>FRDM-MCXN947</b>例程實(shí)現(xiàn)鞋和帽子的識(shí)別

    使用NXP MCX-N板卡搭建環(huán)境及點(diǎn)燈

    FRDM-MCXN947開發(fā)板是一個(gè)基于MCXN947器件的低成本設(shè)計(jì)的評(píng)估。MCXN947器件將兩個(gè)Arm Cortex-M33微
    的頭像 發(fā)表于 02-12 09:07 ?1331次閱讀
    使用NXP MCX-N板卡搭建環(huán)境及點(diǎn)燈

    推出FRDM i.MX 93開發(fā)板

    備受嵌入式開發(fā)者青睞的FRDM開發(fā)平臺(tái),迎來了一位新成員——FRDM i.MX 93
    的頭像 發(fā)表于 02-21 14:22 ?2376次閱讀

    FRDM-MCXA156開發(fā)實(shí)踐指南》上線啦

    ,完成了電子書《FRDM-MCXA156開發(fā)實(shí)踐指南》,希望能夠給大家提供一些支持?!?b class='flag-5'>恩
    的頭像 發(fā)表于 04-06 10:51 ?2053次閱讀
    《<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>FRDM</b>-MCXA156<b class='flag-5'>開發(fā)</b>實(shí)踐指南》上線啦