ST意法半导体
直播中

h1654155275.5661

7年用户 960经验值
私信 关注
[问答]

TuchGFX - STM32F412G-DISCO Scrolllist items从qspi flash获取无法达到预期效果怎么解决?

大家好。我刚认识 Touch Gfx,我是一名学生。
我想在滚动列表中显示我保存在 qspi flash 的第一个扇区中的列表
但我无法达到某种结果
我自己保留了闪存的前 2mb
  • /* Memories definition */
  • MEMORY
  • {
  •   RAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = 256K
  •   FLASH    (rx)    : ORIGIN = 0x8000000,   LENGTH = 1024K
  •   QSPI     (r)     : ORIGIN = 0x90200000,  LENGTH = 14M
  • }
  • // *****  readTable.h ****
  • class readTable
  • {
  • public:
  •         void kategorisayisi ();  //        reading and extracting data from flash
  •         char * RitimIsmiGonder(int no); //for ScrollRitimUpdateItem call
  • private:
  •         char * ritimListesi[121];   // The array I want to send to the scrollist widget
  • }
  • };
      我在一个名为 readTable 的类中进行读取、提取和发送。
  • // readTable.cpp
  • uint16_t sizem = 1000;
  • volatile char  *externalFlash =( char * ) 0x90000000;
  • char  data[1000];
  • char delim[] = "rn";
  •         void readTable::kategorisayisi()
  • {
  •                 for(uint16_t i = 0; i < sizem; i++)
  •                 {
  •                         data = externalFlash;        //dump form extFlash
  •                 }
  •                 char *ptr = strtok(data, delim);   // sorting process
  •                          for(int i=0;i<121;i++)
  •                          {
  •                                  ritimListesi=ptr;            //  transfer fragmented data to array
  •                                  ptr = strtok(NULL, delim);
  •                          }
  • }
  •         char *  readTable::RitimIsmiGonder(int no)
  •         {
  •                 return ritimListesi[no];       //Array element returning for ScrollRitimUpdateItem call
  •         }

  • // **** scrollist CustomContainer *****
  • #include
  • #include "readTable.hpp"
  • RitimIsimleriLCont::RitimIsimleriLCont()
  • {
  • }
  • readTable rt;
  • void RitimIsimleriLCont::initialize()
  • {
  •     RitimIsimleriLContBase::initialize();
  • }
  • void RitimIsimleriLCont::setNumber(uint8_t no)
  •      {
  •                 Unicode::strncpy(RitimlerBuffer ,( const char *)t.RitimIsmiGonder(no) ,10 ); // Calling my list array element
  •       }

毕竟,我在滚动列表中看不到任何东西(有时看到'?'字符)
我可以在调试程序时遵循它。
但过了一会儿我失去了所有的价值。
我在哪里犯了错误?从外面看的眼睛会对我有很大帮助。








回帖(1)

龙旭

2023-1-12 10:28:01
我看到很少有复杂的解决方案和滚动代码,但您没有显示。
Scrollist 在视图代码中需要这个方法

  • void Screen3View::scrollList1UpdateItem(MenuItem &item, int16_t itemIndex) {

在这种方法中,您可以直接从 qflash 中读取而不是您的类...

  • scrollList1.setNumberOfItems(sizeof(UI_Menu_Items_A));

在屏幕的设置代码中,您只需要设置项目数。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分