硬汉嵌入式论坛

 找回密码
 立即注册
查看: 212|回复: 9
收起左侧

[其它] 奇特的现象。。请高人看看。

[复制链接]

57

主题

85

回帖

256

积分

高级会员

积分
256
发表于 前天 17:11 | 显示全部楼层 |阅读模式
void BeepTask(void *argument)
{
  /* USER CODE BEGIN BeepTask */
  /* Infinite loop */
  for(;;)
  {
                osSemaphoreAcquire(BinarySemBeepHandle, osWaitForever);

                BEEP_ON;
                osDelay(60);
                BEEP_OFF;
  }
  /* USER CODE END BeepTask */
}
这个任务由触摸屏按下触发,发现大部分情况下BEEP会响60MS,但有时会明显低于60MS(比如只有20),从示波器上也看到了控制信号确实是如此。
这是为什么?如果偶尔长于60是容易理解的,但无论如何也不应该低于60吧?可能是什么原因?



回复

使用道具 举报

9

主题

102

回帖

129

积分

初级会员

积分
129
发表于 前天 19:17 | 显示全部楼层
被其它任务抢占了吗
回复

使用道具 举报

4

主题

445

回帖

457

积分

高级会员

积分
457
发表于 前天 22:05 | 显示全部楼层
lizhaoming 发表于 2026-1-10 19:17
被其它任务抢占了吗

抢占会变长吧,变短我觉得有两种可能,beep引脚在其他地方被意外改了。把任务栈检测打开是不是有越界了

在 FreeRTOSConfig.h 中,将 configCHECK_FOR_STACK_OVERFLOW 定义为 2。栈溢出时触发 vApplicationStackOverflowHook 钩子函数
回复

使用道具 举报

7

主题

365

回帖

386

积分

高级会员

积分
386
发表于 昨天 11:28 | 显示全部楼层
BEEP-OFF后边再加个延时就正常了。
回复

使用道具 举报

720

主题

3776

回帖

5961

积分

论坛元老

积分
5961
发表于 昨天 17:37 | 显示全部楼层
启动蜂鸣器发声, 建议使用定时器来搞, 在任务里面只负责给相关的标志位赋值,即可
回复

使用道具 举报

5

主题

310

回帖

325

积分

高级会员

积分
325
发表于 5 小时前 | 显示全部楼层
可能其他任务的栈有溢出把这个任务的栈给改了,或者可能是对应的gpio引脚在其他地方也用了
回复

使用道具 举报

11

主题

728

回帖

761

积分

金牌会员

积分
761
发表于 4 小时前 | 显示全部楼层
先把优先级升级最高,测试一下。
回复

使用道具 举报

57

主题

85

回帖

256

积分

高级会员

积分
256
 楼主| 发表于 4 小时前 | 显示全部楼层
hpdell 发表于 2026-1-11 17:37
启动蜂鸣器发声, 建议使用定时器来搞, 在任务里面只负责给相关的标志位赋值,即可

即使用其他方法解决了,但这个问题依然存在,现在是这个现象,无法解释。。
回复

使用道具 举报

0

主题

11

回帖

11

积分

新手上路

积分
11
发表于 4 小时前 | 显示全部楼层
perfect_co 发表于 2026-1-12 09:54
即使用其他方法解决了,但这个问题依然存在,现在是这个现象,无法解释。。

更像是其他地方调用了蜂鸣器的IO,或者栈溢出了,但是看你这个代码这么简单,栈溢出的可能性不大
回复

使用道具 举报

0

主题

79

回帖

79

积分

初级会员

积分
79
发表于 2 小时前 | 显示全部楼层
先关掉其他任务,只运行这一个任务,看看是否还有这种现象。如果没了,应该是其他任务影响;如果还有,那就是这个任务本身有什么问题。就是缩小范围来查找。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-1-12 14:13 , Processed in 0.047136 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表