本帖最后由 jinglixixi 于 2025-3-22 21:47 编辑
在例程中,提供了STemWin方面的测试程序,从中可以学习这方面的经验,也可在其基础上添加自己的应用。
在测试例程中,有2个 测试程序,其一是显示“Hello World!”,其显示效果如图1所示。
图1 显示效果
该例程的主程序为:
int main(void)
{
MPU_Config();
CPU_CACHE_Enable();
HAL_Init();
SystemClock_Config();
BSP_LED_Init(LED1);
uwPrescalerValue = (uint32_t) ((SystemCoreClock /2) / 10000) - 1;
TimHandle.Instance = TIM3;
TimHandle.Init.Period = 500 - 1;
TimHandle.Init.Prescaler = uwPrescalerValue;
TimHandle.Init.ClockDivision = 0;
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
if(HAL_TIM_Base_Init(&TimHandle) != HAL_OK)
{
while(1)
{
}
}
if(HAL_TIM_Base_Start_IT(&TimHandle) != HAL_OK)
{
while(1)
{
}
}
BSP_SDRAM_Init(0);
__HAL_RCC_CRC_CLK_ENABLE();
GUI_Init();
GUI_DispStringAt("Starting...", 0, 0);
GUI_Initialized = 1;
WM_SetCreateFlags(WM_CF_MEMDEV);
MainTask();
for(;;);
}
通过观察,显示字符信息的语句并没有出现,经追踪,其内容位于下面的函数中,其内容为:
void MainTask(void) {
GUI_Clear();
GUI_SetFont(&GUI_Font20_1);
GUI_DispStringAt("Hello world!", (LCD_GetXSize()-100)/2, (LCD_GetYSize()-20)/2);
while(1);
}
由此,我们在需要信息显示时,就可以通过对该例程的使用来达到目的。
而另一个例程的功能就更加强大了,其主程序为:
int main(void)
{
MPU_Config();
CPU_CACHE_Enable();
HAL_Init();
SystemClock_Config();
uwPrescalerValue = (uint32_t) ((SystemCoreClock /2) / 10000) - 1;
TimHandle.Instance = TIM3;
TimHandle.Init.Period = 500 - 1;
TimHandle.Init.Prescaler = uwPrescalerValue;
TimHandle.Init.ClockDivision = 0;
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
if(HAL_TIM_Base_Init(&TimHandle) != HAL_OK)
{
while(1)
{
}
}
if(HAL_TIM_Base_Start_IT(&TimHandle) != HAL_OK)
{
while(1)
{
}
}
BSP_SDRAM_Init(0);
__HAL_RCC_CRC_CLK_ENABLE();
GUI_Init();
GUI_DispStringAt("Starting...", 0, 0);
GUI_DispStringAt("Initializing lcd...", 0, 12);
BSP_Config();
GUI_Initialized = 1;
GUI_DispStringAt("Initializing rtc and backup...", 0, 24);
RTC_Init();
WM_SetCreateFlags(WM_CF_MEMDEV);
CALIBRATION_Check();
GUIDEMO_Main();
for(;;);
}
经程序的编译与下载,其测试效果如下:
图2 界面
图3 表格
图4 目录结构
图5 移动效果
图6环形转动
图7 触摸校正
图8 指定左上角
图9 指定右下角
图10 渐变效果
图11显示图像
图12 显示波形
图13 动画效果
有了这样丰富的资源,在我们的开发过程中就不再孤立无援,它就是我们效果制作的质量基准。
|