使用 stm32f4 (freeRTOS) 在 LCD 屏幕上显示

问题描述

我正在从事一个项目,我在 LCD(SPI 通信)上实时显示音频的频谱,并实时在低通滤波器 (LPF) 和高通滤波器 (HPF) 之间切换( freeRTOS,在 stm32f4 上)。我使用按钮在无过滤器、LPF、HPF 之间循环,并在 LCD 屏幕上打印正在应用的过滤器。除了在 LCD 部分打印外,一切正常。当按钮被按下时,它会生成 EXTI_callback,在那里我启动一个带有中断(用于去抖动)的计时器(50 毫秒)。在经过定时器周期的回调中,我切换 filter_type 并为以下最高优先级任务(最紧急)释放信号量。

void StartCalcBiquadTask(void *argument)
{
  for(;;)
  {
      osSemaphoreAcquire (SemUpdateBiquadHandle,HAL_MAX_DELAY);

      if(filter_type == LPF_FILTER){
          ILI9341_printText("LOW PASS",7,13,COLOR_WHITE,COLOR_BLACK,2);
          
      //do some calculation to get LPF

      }
      else if(filter_type == HPF_FILTER){
          ILI9341_printText("HIGH PASS",2);
          //do some calculation to get HPF

      }

      else{
          ILI9341_printText("NO FILTER",2);
      }

  }
  /* USER CODE END StartCalcBiquadTask */
}

printText 的原型

void ILI9341_printText(char text[],int16_t x,int16_t y,uint16_t color,uint16_t bg,uint8_t size)

奇怪的是音频得到了完美的过滤,但 printText 可能只有五分之二的工作。我知道 ILI9341_printText 函数本身可以毫无问题地工作。

对此问题的任何想法/评论/问题表示赞赏。谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)