时钟芯片程序中按键按下声音有变长的意外的情况出现

2020-03-12 19:48发布

我写了时钟芯片程序显示时间,按下按键声音短促,但是按键按着按着会出现声音变长的情况,我自己觉得display函数运行时间太长的原因,我把这个display函数给屏蔽后蜂鸣器声音就不会出现声音加长的情况!
请问遇到这种情况我该怎么处理?

key_scanf函数是写在主函数里面,按键是机械按键,蜂鸣器是无源的

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
ayb_ice
1楼-- · 2020-03-14 11:35


我是使用东软的HR7P275 ,工作频率是16mhz ,刷全屏时间大约1.2秒,看门狗都溢出了,我都在里面刷屏里面 ...


你这MCU太慢了,没有有办法

只能把响BEEP时间控制也放在中断里了(比如定时10ms中断)

lihui567
2楼-- · 2020-03-14 15:31
东软的这颗MCU,主频有点低但是,驱动蜂鸣器正常发声还是绰绰有余的
KloppGuo
3楼-- · 2020-03-14 18:49
 精彩回答 2  元偷偷看……
KloppGuo
4楼-- · 2020-03-14 20:20


东软的这颗MCU,主频有点低但是,驱动蜂鸣器正常发声还是绰绰有余的


发声是可以,beep放在main函数里面,按键按下的时候偶尔会出现蜂鸣声音加长的情况

ayb_ice
5楼-- · 2020-03-14 23:52

是的,把beep放在中断里面就不会出现蜂鸣声音变长的情况!但是我一直觉得中断函数要少执行指令,快速出栈 ...


这有什么问题呢,每次中断简单处理下时间到了没有而已(几条指令而已),又没让你在中断里等待BEEP响完才退出

u8 ucBeepTime;

void ISR_10ms(void)
{
        if (ucBeepTime)
        {
                if (--ucBeepTime == 0)
                {
                        BEEP_OFF();
                }
        }
}

void TestBeep(void)
{
        if (KEY1)
        {
                BEEP_ON();
                ucBeepTime = 100;
        }
}


hwpga
6楼-- · 2020-03-15 04:02
东软这颗2t时钟周期速度可不慢
1/16*2=0.125US
用OTP那种4T的MCU都不会出现这情况
你自己水平问题,跟单片机真没关系

一周热门 更多>