当前位置: 首页 > news >正文

赤峰做网站哪家好体验营销理论

赤峰做网站哪家好,体验营销理论,淘宝网做网站,国外域名拍卖网站配置请参考链接:TouchGFX超低配置移植教程-CSDN博客 一,显示配置 1.适当增加堆栈大小 2.适当增大缓冲大小 双重缓冲消除了任何撕裂的风险,无论渲染下一帧需要多长时间,因为TfT控制器,例如,总是可以访问最…

配置请参考链接:TouchGFX超低配置移植教程-CSDN博客

一,显示配置

1.适当增加堆栈大小

2.适当增大缓冲大小

        双重缓冲消除了任何撕裂的风险,无论渲染下一帧需要多长时间,因为TfT控制器,例如,总是可以访问最新的完整帧数据。单个缓冲可以消除对外部存储器的需求(可能会发生撕裂)。部分缓冲消除了对外部内存的需求,同时仍然允许将大部分内部内存用于framebuffer之外的事情。

        如果“Number of Blocks”设置为1,这意味着TouchGFX将只分配一个内存块用于帧缓冲区。这通常适用于简单的图形界面或显示需求不高的应用场景。在这种情况下,TouchGFX将使用一个单缓冲区方案来更新和显示图形数据。

然而,如果图形界面较为复杂或需要更高的刷新率,可能需要使用双缓冲或多缓冲方案来减少屏幕撕裂和闪烁现象。在这种情况下,“Number of Blocks”参数的值将相应增加,以允许TouchGFX分配更多的内存块用于帧缓冲区。

二,硬件配置

1.开启I2C1用于连接触摸芯片,(PB6,PB7)

2.开启SPI1(Transmit Only Master)用于LCD 串行数据传输,(PB3,PB5),开启DMA

开启SPI中断用于屏幕刷新完成时调用函数

3.开启QSPI 4线模式用于读写W25Q64

计算请参考链接:

4.开启tim6 定时器为TouchGFX提供时钟源

三,C/C++ 基础示例

1.在cpp文件中的c函数外部函数声明:

extern "C" int touchgfxDisplayDriverTransmitActive();

2.在c文件中的cpp函数外部函数声明:

extern void touchgfxTickHandler(void);//也可以省略extern

3.使cpp文件中的函数兼容c文件使用:

extern "C"
void DisplayDriver_TransferCompleteCallback()
{PartialFrameBufferManager::tryTransmitBlockFromIRQ();
}

要在其他 C 文件中使用在 TouchGFXGeneratedHAL.cpp 中定义的 DisplayDriver_TransferCompleteCallback 函数,你需要确保以下几点:

声明函数原型:在需要使用该函数的 C 文件中声明该函数的原型。 确保链接:确保在编译和链接时包含 TouchGFXGeneratedHAL.cpp 文件,以便链接器能够找到该函数的定义。

由于 DisplayDriver_TransferCompleteCallback 函数被声明为 extern "C",它具有 C 链接约定,因此可以在 C 文件中直接使用。

以下是具体步骤:

步骤 1:声明函数原型

在需要使用 DisplayDriver_TransferCompleteCallback 函数的 C 文件中声明该函数的原型。

你可以通过创建一个头文件来包含这个声明,或者直接在 C 文件中声明。

void touchgfxTickHandler(void);
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{static int counter=0;if (htim->Instance == TIM6){touchgfxTickHandler();if(++counter%200==0)toggle_led();}
}

4.无论是函数还是全局变量,在一个文件中定义了,在另一个文件中如果要使用只需要extern外部声明一下就行了,其中函数可以省略extern,在.h文件中声明只是为了方便管理而已。

四,无外扩flash代码移植:

TGFX SPI左侧为原始代码,右侧为用户代码。无外部flash移植,仅提供思路:

1,点击TouchGFXGeneratedHAL.cpp,其位于Application/User/ TouchGFX/target/generated一栏中,在该点cpp文件的开头就可以看到四个函数声明,前三个都是需要用户自己提供。

//st7789.c
volatile uint8_t IsTransmittingBlock_=0;
/*** Check if a Frame Buffer Block is beeing transmitted.*/
int touchgfxDisplayDriverTransmitActive(void)
{return IsTransmittingBlock_;
}
/*** Check if a Frame Buffer Block ending at bottom may be sent.*/
int touchgfxDisplayDriverShouldTransferBlock(uint16_t bottom)
{return 1;
}
/*** Transmit a Frame Buffer Block.*/
void touchgfxDisplayDriverTransmitBlock(const uint8_t* pixels, uint16_t x, uint16_t y, uint16_t w, uint16_t h)
{IsTransmittingBlock_=1;ST7789_DrawImage(x,y,w,h,(uint16_t*)pixels);
}

2,除了上述三个函数,还需要注意一个函数DisplayDriver_TransferCompleteCallback,用户需要在屏幕刷新完成时调用该函数。

//spi.c
extern volatile uint8_t IsTransmittingBlock_;
extern void DisplayDriver_TransferCompleteCallback(void);
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
{if (hspi->Instance == SPI1) {IsTransmittingBlock_ = 0;DisplayDriver_TransferCompleteCallback();}
}

3,TouchGFX正常工作的前提条件是需要一个外部的时钟源,由于本例程使用的屏为SPI屏,STM32CubeMX中配置的时钟源选项默认为Custom,即需要用户自己为TouchGFX提供时钟源

//tim.c
extern void touchgfxTickHandler(void);
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{static int counter=0;if (htim->Instance == TIM6){touchgfxTickHandler();if(++counter%200==0)HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);}
}
//OSWrappers.cpp
extern "C" {uint8_t isInited = 0;}
extern "C" 
void touchgfxTickHandler()
{static uint8_t ms = 0;static uint8_t isHigh = 0;if(isInited){ms++;if(ms==20){ms = 0;isHigh = !isHigh;if(isHigh){OSWrappers::signalVSync();}else{HAL::getInstance()->frontPorchEntered();}	}}
}

4.使用外部变量 isInited 为 1,表示初始化已经成功完成。

extern uint8_t isInited;
isInited = 1;

5.初始化SPI屏幕,开启定时器中断

ST7789_Init();	
HAL_TIM_Base_Start_IT(&htim6);

http://www.yidumall.com/news/48193.html

相关文章:

  • 网站做百度推广为什么没人咨询南宁seo手段
  • dw做aspx网站老客外链
  • 网站建设使用的工具手机百度下载免费
  • 内蒙古网站开发营销型网站有哪些
  • 英文网站建站哪里有学电脑培训班
  • 党建网站建设考核评比线上电脑培训班
  • 无毒手机网站河北网站seo地址
  • 免费营销型网站建设百度客户端下载
  • 企业型网站建设费用5118网站如何使用免费版
  • 郑州做网站最好的公司seo推广方案
  • 河南省国基建设集团有限公司网站螺蛳粉的软文推广
  • 四川网站建设网站制作网络营销成功案例有哪些
  • 闵行区建设和管理委员会网站erp123登录入口
  • jsp做网站都可以做什么如何制作网页
  • 做那个的网站百度推广按点击收费
  • 淘宝客单页网站怎么做景区营销案例100例
  • 石家庄专门做网站的公司网站优化外包价格
  • 建设部执业资格注册中心网站查询提供搜索引擎优化公司
  • 付费网站做推广哪个好青岛新闻最新消息
  • 天津网站建设外包个人网站制作源代码
  • 为女朋友做网站网站友情链接是什么
  • 建网站多少钱可以卖货的营销策略有哪几种
  • 网站开发维护求职信网店营销策略有哪些
  • 可用的ftp网站搜索引擎优化是什么
  • 网站建设公司不赚钱郑州seo优化顾问热狗
  • 做旅游网站的写手手机网站自助建站系统
  • 如何自己做网站推广如何进行电子商务网站推广
  • php网站做代理服务器营销推广方案设计
  • 做网站用哪个预装系统优化关键词技巧
  • python 网站开发神器推广公司简介