damiaa

  • 2024-11-12
  • 回复了主题帖: 长大的你,还相信光吗?

    本来他就有光,只是你提醒了他。 还以为是说了假话骗他。

  • 回复了主题帖: 为什么查找flash_open()这个函数的定义时,查到的是 #define flash_open()

    #define flash_open() 后面语句的flash_open()被替换为空字符串。也就是后面看到的所有flash_open()这句话被预处理后相当于删除了。但不用手工去删除它(保留代码 预处理去掉了这样的代码。但编译后没这部分代码)。

  • 回复了主题帖: 【STM32H7S78-DK】 七 特殊功能计算器

    秦天qintian0303 发表于 2024-11-12 12:19 直接来个工程师专属计算器  

  • 回复了主题帖: 【STM32H7S78-DK】 七 特殊功能计算器

    秦天qintian0303 发表于 2024-11-11 23:42 直接上面显示区间充足,各种进制数直接显示 有道理,要把各种进制直接显示。这样更好进行对比。 有时间还可以加按位与或非异或, 逻辑与或非异或等。   搞了也可以转到C#,在电脑里面玩。

  • 2024-11-11
  • 回复了主题帖: 【STM32H7S78-DK】 七 特殊功能计算器

    本帖最后由 damiaa 于 2024-11-11 14:04 编辑 Jacktang 发表于 2024-11-11 07:25 Screep1view.cpp中加入虚函数和更新按键函数,这段代码还是比较长 是啊,应该可以合并到一个虚函数里面判断是哪个按键按下的。 没仔细看是哪个api是判断哪个按键按下。 再加上昨天是10号。到了结束日。没时间仔细研究。 所以就这样先将就着。 多几个函数,但也还算比较直观。 也便于后面加功能,比如每个按键按下,弹起的颜色改变,形状改变就可以在自己按键的虚函数里面区实现。 还有数字框里面输入达到8位数字后数字颜色变灰,不让再输入,必须输入左移右移、*、%等。

  • 2024-11-10
  • 发表了主题帖: 【STM32H7S78-DK】 七 特殊功能计算器

    本帖最后由 damiaa 于 2024-11-10 13:03 编辑                         【STM32H7S78-DK】 七 特殊功能计算器     【STM32H7S78-DK】 一 开箱贴 【STM32H7S78-DK】 二 touchgxf环境搭建和基本测试 【STM32H7S78-DK】 三 touchgxf和stm32cubeide和led按键测试 【STM32H7S78-DK】 四 下载失败问题及解决、计数器实现及分析 【STM32H7S78-DK】 五 乱序键盘实现及分析 【STM32H7S78-DK】 六 可设置时钟及代码分析 之后   想用这个板子做个特殊功能计算器,能计算左移右移乘除和取余,开始。   一、打开touchgfx designer ,加上提按键0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,<<,>>,%,*,/,clear,=按键。 如下:   二、加上每个按键的虚函数。如下是0按键的,其他类似。   三、增加textArea1,textArea3,textArea3。分别加入wildcard1 并且勾选使用这个缓冲更新数据。   四、给每个设置字体为Large,40pt 并且在Texts的Typographies里面设置wildcard Ranges 0~f   五、Screep1view.hpp中加入头文件: #ifndef SCREEN1VIEW_HPP #define SCREEN1VIEW_HPP #include <gui_generated/screen1_screen/Screen1ViewBase.hpp> #include <gui/screen1_screen/Screen1Presenter.hpp> class Screen1View : public Screen1ViewBase { public: Screen1View(); virtual ~Screen1View() {} virtual void setupScreen(); virtual void tearDownScreen(); virtual void function_bt0(); virtual void function_bt1(); virtual void function_bt2(); virtual void function_bt3(); virtual void function_bt4(); virtual void function_bt5(); virtual void function_bt6(); virtual void function_bt7(); virtual void function_bt8(); virtual void function_bt9(); virtual void function_bta(); virtual void function_btb(); virtual void function_btc(); virtual void function_btd(); virtual void function_bte(); virtual void function_btf(); virtual void function_bt_eq(); virtual void function_bt_right(); virtual void function_bt_left(); virtual void function_bt_mul(); virtual void function_bt_els(); virtual void function_bt_div(); virtual void function_bt_clr(); void updateGFXElements(uint8_t bt_val); protected: uint32_t dat_a; uint32_t dat_b; uint32_t dat_c; uint8_t point; char oldchar; }; #endif // SCREEN1VIEW_HPP 六、Screep1view.cpp中加入虚函数和更新按键函数的具体实现如下: #include <gui/screen1_screen/Screen1View.hpp> Screen1View::Screen1View() { } void Screen1View::setupScreen() { Screen1ViewBase::setupScreen(); } void Screen1View::tearDownScreen() { Screen1ViewBase::tearDownScreen(); } void Screen1View::function_bt0() { updateGFXElements(0); } void Screen1View::function_bt1() { updateGFXElements(1); } void Screen1View::function_bt2() { updateGFXElements(2); } void Screen1View::function_bt3() { updateGFXElements(3); } void Screen1View::function_bt4() { updateGFXElements(4); } void Screen1View::function_bt5() { updateGFXElements(5); } void Screen1View::function_bt6() { updateGFXElements(6); } void Screen1View::function_bt7() { updateGFXElements(7); } void Screen1View::function_bt8() { updateGFXElements(8); } void Screen1View::function_bt9() { updateGFXElements(9); } void Screen1View::function_bta() { updateGFXElements(0x0a); } void Screen1View::function_btb() { updateGFXElements(0x0b); } void Screen1View::function_btc() { updateGFXElements(0x0c); } void Screen1View::function_btd() { updateGFXElements(0x0d); } void Screen1View::function_bte() { updateGFXElements(0x0e); } void Screen1View::function_btf() { updateGFXElements(0x0f); } void Screen1View::function_bt_eq() { updateGFXElements(0x20); } void Screen1View::function_bt_right() { updateGFXElements(0x21); } void Screen1View::function_bt_left() { updateGFXElements(0x22); } void Screen1View::function_bt_els() { updateGFXElements(0x23); } void Screen1View::function_bt_mul() { updateGFXElements(0x24); } void Screen1View::function_bt_div() { updateGFXElements(0x25); } void Screen1View::function_bt_clr() { updateGFXElements(0x26); } void Screen1View::updateGFXElements(uint8_t bt_val) { if( bt_val <= 0x0f) { if(point == 0) { dat_a <<=4; dat_a +=bt_val; } else { dat_b <<=4; dat_b +=bt_val; } } else { switch(bt_val) { case 0x20: //= if(oldchar == 0x21) dat_c = dat_a >> dat_b; else { if(oldchar == 0x22) { dat_c =dat_a << dat_b; } else { if(oldchar == 0x23) { if(dat_b !=0) dat_c =dat_a%dat_b; } else { if(oldchar == 0x24) dat_c =dat_a*dat_b; else { if(oldchar == 0x25) { if(dat_b !=0) dat_c =dat_a/dat_b; } else { if(oldchar == 0x26) { point =0;oldchar =0x0;dat_a=dat_b=dat_c=0; } } } } } } point =0;oldchar =0; break; case 0x21:point =1;oldchar =0x21;break;//>> case 0x22:point =1;oldchar =0x22;break;//<< case 0x23:point =1;oldchar =0x23;break;//% case 0x24:point =1;oldchar =0x24;break;//* case 0x25:point =1;oldchar =0x25;break;//div case 0x26:point =0;oldchar =0x0;dat_a=dat_b=dat_c=0;break;//clear } } touchgfx::Unicode::snprintf(textArea1Buffer,TEXTAREA1_SIZE,"%x", dat_a ); textArea1.invalidate(); touchgfx::Unicode::snprintf(textArea2Buffer,TEXTAREA2_SIZE,"%x", dat_b ); textArea2.invalidate(); touchgfx::Unicode::snprintf(textArea3Buffer,TEXTAREA3_SIZE,"%x", dat_c ); textArea3.invalidate(); } 五、编译运行,效果如下: [localvideo]56b064fb52debb6ce2b549c29b795ac2[/localvideo]   好,先分析到这里。                                                                           谢谢

  • 发表了日志: 【STM32H7S78-DK】 七 特殊功能计算器

  • 2024-11-07
  • 回复了主题帖: 【得捷电子Follow me第1期】+ 提交贴

    ID.LODA 发表于 2024-11-7 09:31 不太行,至少得放窗边 知道了。谢谢。

  • 2024-11-06
  • 回复了主题帖: 【得捷电子Follow me第1期】+ 提交贴

    不知道这个室内效果如何。

  • 2024-11-05
  • 回复了主题帖: stm32f103c8t6定时器1遇到的诡异问题

    芯片是真的,应该是代码的问题吧。可以看看时钟树和时钟相关的寄存器。看看哪里变了,为什么变了。

  • 2024-11-03
  • 发表了日志: 【STM32H7S78-DK】 六 可设置时钟及代码分析

  • 发表了主题帖: 【STM32H7S78-DK】 六 可设置时钟及代码分析

    本帖最后由 damiaa 于 2024-11-3 22:17 编辑                       【STM32H7S78-DK】 六 可设置时钟及代码分析   【STM32H7S78-DK】 一 开箱贴 【STM32H7S78-DK】 二 touchgxf环境搭建和基本测试 【STM32H7S78-DK】 三 touchgxf和stm32cubeide和led按键测试 【STM32H7S78-DK】 四 下载失败问题及解决、计数器实现及分析 【STM32H7S78-DK】 五 乱序键盘实现及分析 之后   一、打开touchgfx designer ,加上提示文本数字时钟显示文本和模拟显示界面,这里直接使用例子里面的界面导过来。 加上时钟的时分秒设置的加减键,时钟设置的开始键,OK键其实没什么用,这里页懒得删除了。如下图所示:   二、给每个按钮设置Interactions为按下后调用虚函数。每个虚函数名字不一样 如下。   三、打开代码MainView.hpp中加入虚函数和一些时钟变量和时钟设置标记如下:   四、MainView.cpp中加入虚函数和更新按键函数的具体实现如下: 每秒更新实现 时分秒设置按键实现 允许设置和OK键 这里其实OK键没什么用懒得删除了,允许设置在没选中 也可以设置时间,只是时间还是走,设置允许就时钟不走,可以专注设置。   五、主要代码: MainView.hpp: #ifndef MAIN_VIEW_HPP #define MAIN_VIEW_HPP #include <gui_generated/main_screen/MainViewBase.hpp> #include <gui/main_screen/MainPresenter.hpp> class MainView : public MainViewBase { public: MainView(); virtual ~MainView() {} virtual void setupScreen(); virtual void tearDownScreen(); virtual void handleTickEvent(); virtual void bt1_function(); virtual void bt2_function(); virtual void bt3_function(); virtual void bt4_function(); virtual void bt5_function(); virtual void bt6_function(); virtual void toggle_function(); virtual void OK_function(); protected: int tickCounter; int analogHours; int analogMinutes; int analogSeconds; int digitalHours; int digitalMinutes; int digitalSeconds; bool setflag; }; #endif // MAIN_VIEW_HPP MainView.cpp: #include <gui/main_screen/MainView.hpp> MainView::MainView() : tickCounter(0) { } void MainView::setupScreen() { MainViewBase::setupScreen(); digitalHours = digitalClock.getCurrentHour(); digitalMinutes = digitalClock.getCurrentMinute(); digitalSeconds = digitalClock.getCurrentSecond(); analogHours = analogClock.getCurrentHour(); analogMinutes = analogClock.getCurrentMinute(); analogSeconds = analogClock.getCurrentSecond(); } void MainView::tearDownScreen() { MainViewBase::tearDownScreen(); } void MainView::handleTickEvent() { if(true != setflag ) { tickCounter++; if (tickCounter % 60 == 0) { if (++digitalSeconds >= 60) { digitalSeconds = 0; if (++digitalMinutes >= 60) { digitalMinutes = 0; if (++digitalHours >= 24) { digitalHours = 0; } } } if (++analogSeconds >= 60) { analogSeconds = 0; if (++analogMinutes >= 60) { analogMinutes = 0; if (++analogHours >= 24) { analogHours = 0; } } } // Update the clocks digitalClock.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds); analogClock.setTime24Hour(analogHours, analogMinutes, analogSeconds); } } } void MainView::bt1_function() { if(digitalHours >=23) digitalHours =0; else digitalHours++; analogHours =digitalHours; digitalClock.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds); analogClock.setTime24Hour(analogHours, analogMinutes, analogSeconds); } void MainView::bt2_function() { if(digitalHours ==0) digitalHours =23; else digitalHours--; analogHours =digitalHours; digitalClock.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds); analogClock.setTime24Hour(analogHours, analogMinutes, analogSeconds); } void MainView::bt3_function() { if(digitalMinutes >=59) digitalMinutes =0; else digitalMinutes++; analogMinutes =digitalMinutes; digitalClock.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds); analogClock.setTime24Hour(analogHours, analogMinutes, analogSeconds); } void MainView::bt4_function() { if(digitalMinutes == 0) digitalMinutes=59; else digitalMinutes--; analogMinutes =digitalMinutes; digitalClock.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds); analogClock.setTime24Hour(analogHours, analogMinutes, analogSeconds); } void MainView::bt5_function() { if(digitalSeconds >=59) digitalSeconds=0; else digitalSeconds++; analogSeconds =digitalSeconds; digitalClock.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds); analogClock.setTime24Hour(analogHours, analogMinutes, analogSeconds); } void MainView::bt6_function() { if(0 ==digitalSeconds) digitalSeconds=59; else digitalSeconds--; analogSeconds =digitalSeconds; digitalClock.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds); analogClock.setTime24Hour(analogHours, analogMinutes, analogSeconds); } void MainView::toggle_function() { // Override and implement this function in Main //setflag setflag =toggleButton1.getState(); } void MainView::OK_function() { digitalClock.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds); analogClock.setTime24Hour(analogHours, analogMinutes, analogSeconds); toggleButton1.forceState(false); digitalClock.invalidate(); toggleButton1.invalidate(); }   六、编译运行,效果如下: [localvideo]a0fa491ad928c0f1bc4f3705f108be83[/localvideo]   好,先分析到这里。                                                                                            谢谢

  • 发表了日志: 【STM32H7S78-DK】 五 乱序键盘实现及分析

  • 发表了主题帖: 【STM32H7S78-DK】 五 乱序键盘实现及分析

    本帖最后由 damiaa 于 2024-11-3 15:33 编辑             【STM32H7S78-DK】 五 乱序键盘实现及分析     【STM32H7S78-DK】 一 开箱贴 【STM32H7S78-DK】 二 touchgxf环境搭建和基本测试 【STM32H7S78-DK】 三 touchgxf和stm32cubeide和led按键测试 【STM32H7S78-DK】 四 下载失败问题及解决、计数器实现及分析 之后   一、打开touchgfx designer ,加上提示文本和10个标号按键,一个toggle button按键,使用这个togglebutton按键 按下时打乱10个标号按键的位置顺序。   二、toggleButton1按钮设置Interactions为按下后调用虚函数change_key_name_val   三、打开代码Screen1View.hpp中加入虚函数和更新按键函数如下:   五、Screen1View.cpp中加入虚函数和更新按键函数的具体实现,并且加入随机数函数更新按键的位置信息如下: 随机数函数   六、虚函数实现 调用更新按键函数   七、更新按键函数   八、编译运行,效果如下:   [localvideo]7ebe38c248fe5bdc92f2328d1ac9f8e9[/localvideo]   好,先分析到这里。                                                                                                            谢谢

  • 发表了日志: 【STM32H7S78-DK】 四 下载失败问题及解决、计数器实现及分析

  • 发表了主题帖: 【STM32H7S78-DK】 四 下载失败问题及解决、计数器实现及分析

    本帖最后由 damiaa 于 2024-11-4 08:30 编辑          【STM32H7S78-DK】 四 下载失败问题及解决、计数器实现及分析     【STM32H7S78-DK】 一 开箱贴 【STM32H7S78-DK】 二 touchgxf环境搭建和基本测试 【STM32H7S78-DK】 三 touchgxf和stm32cubeide和led按键测试 之后   一、 在测试和调试一个计数器的程序的时候发现下载不行,查看是连接不上ST-link V3了 如下: 但上次下的还是在显示屏上显示。  使用STM32CubeProgrammer连接也是连接不上:   发现这些问题后想想直接在复位时连接stlink接口IO,看行不行,如是还是用STM32CubeProgrammer连接 同时按板子复位键。连上 了还能读和擦除。   用同样的方法(在touchgfx下载程序时按复位),touchgfx designer 下载页可以了,   二、下面看看这个计数器的例子   从箭头哪里两个点 的地方进去可以编辑源代码 我们一般关注下面几个文件 MainViewBase.hpp和MainViewBase.cpp是touchgfx designer产生的文件,里面包含了基本的类和实现。 MainViewBase.hpp: /*********************************************************************************/ /********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ /*********************************************************************************/ #ifndef MAINVIEWBASE_HPP #define MAINVIEWBASE_HPP #include <gui/common/FrontendApplication.hpp> #include <mvp/View.hpp> #include <gui/main_screen/MainPresenter.hpp> #include <touchgfx/widgets/Box.hpp> #include <touchgfx/widgets/Image.hpp> #include <touchgfx/widgets/TextAreaWithWildcard.hpp> #include <touchgfx/widgets/Button.hpp> class MainViewBase : public touchgfx::View<MainPresenter> { public: MainViewBase(); virtual ~MainViewBase(); virtual void setupScreen(); /* * Virtual Action Handlers */ virtual void increaseValue() { // Override and implement this function in Main } virtual void decreaseValue() { // Override and implement this function in Main } protected: FrontendApplication& application() { return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance()); } /* * Member Declarations */ touchgfx::Box __background; touchgfx::Image backgroundImage; touchgfx::Image counterBackgroundImage; touchgfx::TextAreaWithOneWildcard countTxt; touchgfx::Button buttonUp; touchgfx::Button buttonDown; /* * Wildcard Buffers */ static const uint16_t COUNTTXT_SIZE = 5; touchgfx::Unicode::UnicodeChar countTxtBuffer[COUNTTXT_SIZE]; private: /* * Callback Declarations */ touchgfx::Callback<MainViewBase, const touchgfx::AbstractButton&> buttonCallback; /* * Callback Handler Declarations */ void buttonCallbackHandler(const touchgfx::AbstractButton& src); }; #endif // MAINVIEWBASE_HPP   MainViewBase.cpp /*********************************************************************************/ /********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ /*********************************************************************************/ #include <gui_generated/main_screen/MainViewBase.hpp> #include <touchgfx/Color.hpp> #include <images/BitmapDatabase.hpp> #include <texts/TextKeysAndLanguages.hpp> MainViewBase::MainViewBase() : buttonCallback(this, &MainViewBase::buttonCallbackHandler) { __background.setPosition(0, 0, 800, 480); __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); add(__background); backgroundImage.setXY(150, 120); backgroundImage.setBitmap(touchgfx::Bitmap(BITMAP_BG_ID)); add(backgroundImage); counterBackgroundImage.setXY(400, 152); counterBackgroundImage.setBitmap(touchgfx::Bitmap(BITMAP_COUNTER_BOX_ID)); add(counterBackgroundImage); countTxt.setPosition(316, 189, 302, 104); countTxt.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255)); countTxt.setLinespacing(4); Unicode::snprintf(countTxtBuffer, COUNTTXT_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_XERM).getText()); countTxt.setWildcard(countTxtBuffer); countTxt.setTypedText(touchgfx::TypedText(T_TEXTID1)); add(countTxt); buttonUp.setXY(169, 173); buttonUp.setBitmaps(touchgfx::Bitmap(BITMAP_UP_BTN_ID), touchgfx::Bitmap(BITMAP_UP_BTN_PRESSED_ID)); buttonUp.setAction(buttonCallback); add(buttonUp); buttonDown.setXY(169, 265); buttonDown.setBitmaps(touchgfx::Bitmap(BITMAP_DOWN_BTN_ID), touchgfx::Bitmap(BITMAP_DOWN_BTN_PRESSED_ID)); buttonDown.setAction(buttonCallback); add(buttonDown); } MainViewBase::~MainViewBase() { } void MainViewBase::setupScreen() { } void MainViewBase::buttonCallbackHandler(const touchgfx::AbstractButton& src) { if (&src == &buttonUp) { //IncreaseValue //When buttonUp clicked call virtual function //Call increaseValue increaseValue(); } if (&src == &buttonDown) { //DecreaseValue //When buttonDown clicked call virtual function //Call decreaseValue decreaseValue(); } }   MainView.hpp和MainView.cpp是touchgfx designer产生的文件,里面包含了用户可以修改的类和实现,是继承了上面两个文件里面实现的基类。 MainView.hpp: #ifndef MAIN_VIEW_HPP #define MAIN_VIEW_HPP #include <gui_generated/main_screen/MainViewBase.hpp> #include <gui/main_screen/MainPresenter.hpp> class MainView : public MainViewBase { public: MainView(); ~MainView() {}; virtual void setupScreen(); virtual void increaseValue(); virtual void decreaseValue(); void updateGFXElements(); protected: private: uint32_t count; }; #endif // MAIN_VIEW_HPP MainView.cpp: #include <gui/main_screen/MainView.hpp> #include "BitmapDatabase.hpp" const uint32_t UPPER_LIMIT = 9999; const uint32_t LOWER_LIMIT = 0; MainView::MainView() : count(0) {} void MainView::setupScreen() { updateGFXElements(); } void MainView::increaseValue() { count = (count++ > UPPER_LIMIT) ? UPPER_LIMIT : count; updateGFXElements(); } void MainView::decreaseValue() { count = (count-- <= LOWER_LIMIT) ? LOWER_LIMIT : count; updateGFXElements(); } void MainView::updateGFXElements() { //Counter text area GFX uptade. Unicode::snprintf(countTxtBuffer, 5, "%d", count); //Button GFX update and touchable. if (count < UPPER_LIMIT) { buttonUp.setBitmaps(Bitmap(BITMAP_UP_BTN_ID), Bitmap(BITMAP_UP_BTN_PRESSED_ID)); buttonUp.setTouchable(true); } else { buttonUp.setBitmaps(Bitmap(BITMAP_UP_BTN_DISABLED_ID), Bitmap(BITMAP_UP_BTN_DISABLED_ID)); buttonUp.setTouchable(false); } if (count > LOWER_LIMIT) { buttonDown.setBitmaps(Bitmap(BITMAP_DOWN_BTN_ID), Bitmap(BITMAP_DOWN_BTN_PRESSED_ID)); buttonDown.setTouchable(true); } else { buttonDown.setBitmaps(Bitmap(BITMAP_DOWN_BTN_DISABLED_ID), Bitmap(BITMAP_DOWN_BTN_DISABLED_ID)); buttonDown.setTouchable(false); } // Invalidate all GFX area, which will result in it being redrawn in next tick. countTxt.invalidate(); buttonUp.invalidate(); buttonDown.invalidate(); }     为了把显示放的位置放到中间 并且显示数字可以9999以下,修改了几个地方 1,MainviewBase.hpp的基类中修改了这里,目的是把缓冲区变大,能存5个字节 :(这个文件一般用户代码不怎么修改一般由touchgfx designer修改,但我这里是借用的例子,就直接修改了) 2,修改下面MainviewBase.cpp 3,修改Mainview.hpp的uint8_t count uint32_t count 4,修改Mainview.cpp的UPPER_LIMIT为9999   5,代码浅释: Mainview.hpp中定义了继承于MainViewBase 的MainView 类 主要定义了虚函数 设置屏幕、值加减、和图片更新函数和变量count class MainView : public MainViewBase { public:     MainView();     ~MainView() {};     virtual void setupScreen();     virtual void increaseValue();     virtual void decreaseValue();     void updateGFXElements(); protected: private:     uint32_t count; };   Mainview.cpp中定义了这些函数的实现 increaseValue()和decreaseValue()分别实现加数和减数,并且调用updateGFXElements();进行界面数据和按键背景更新。   界面设置中对显示countTxt的页面进行了下面的设置 所以在updateGFXElements()函数中使用 Unicode::snprintf(countTxtBuffer, 5, "%d", count); 能对countTxt的内容进行更新 updateGFXElements()函数页对数值的大小进行了限制,而且重新设置了按键的背景图片。 最后让countTxt和buttonUp和buttonDown失效,这样就能实现重画而更新界面。   count实现count变量的初始化。       好,先分析到这里。                                                                                     谢谢

  • 2024-11-01
  • 回复了主题帖: 关于if else 代码中 else 后代码执行条件的问题

    本帖最后由 damiaa 于 2024-11-1 09:32 编辑 楼上的    !(   buffer==0x01 )并且!( total <0 ) ==》   (buffer!=0x01) 并且  ( total>=0) 就进入代码2.

  • 2024-10-25
  • 回复了主题帖: 这是哪款逻辑分析仪上位机采集到的波形?

    QWE4562009 发表于 2024-10-24 11:06 啥意思  没看懂  分享一下购买的链接? 网上买个rp2040的板子,自己下个程序。可以搜索 rp2040做逻辑分析仪。

  • 2024-10-24
  • 回复了主题帖: 今天周三啦!!!

    没法讨论,因为今天周四了。

  • 2024-10-23
  • 回复了主题帖: 这是哪款逻辑分析仪上位机采集到的波形?

    pulse view 软件可以配个rp2040做的逻辑分析仪玩。

最近访客

< 1/6 >

统计信息

已有5694人来访过

  • 芯积分:6925
  • 好友:25
  • 主题:472
  • 回复:5590

留言

你需要登录后才可以留言 登录 | 注册


JACKYJ.88 2019-9-12
想给你发个私信都提示内容包含不良信息而发不出去,请帮我看下我发的那个求助贴
fjjjnk1234 2018-2-27
damiaa: 能发个SimpleLink Starter App给我吗。下载不到。嘿嘿。
之前因为手机不兼容,删掉了,原链接地址好像也不能下载了
moyanming2013 2015-11-4
damiaa: 竟然拖到上面去了。
没听懂,什么意思?
chonchie 2014-7-7
你好,想向你请教关于R61526液晶驱动芯片的事情,我驱动好像成功了,液晶显示雪花,但是我无法让屏幕显示纯色。
damiaa 2014-6-21
MULITISIM 没用过哦。你先学习好,以后向你学习。哈哈。
叁水西石 2014-3-1
您 好版长  我 才今天注册的.想学习下电子仿真软件的使用 在ADI 那发了个 贴  具体是MULITISIM 仿真软件的使用和学习.刚来不熟悉.不知道发贴  发对了地方没.给添麻烦了.指点 或者介绍下建议怎么学或者介绍些仿真软件学习的群.谢谢
查看全部