如何解决使用 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 举报,一经查实,本站将立刻删除。