硬汉嵌入式论坛

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

[例程下载] STM32F4实验二:蜂鸣器

[复制链接]

20

主题

55

回帖

20

积分

初级会员

积分
20
发表于 2012-12-18 19:56:31 | 显示全部楼层 |阅读模式
说明:
硬件:采用armfly的STM32F407VGT6核心板
软件:MDK 4.23
(1)由于需要调试,所以为每个例程都添加上串口和嘀嗒定时器。
(2)先不做高级实验,等把F4的基本外设都搞熟了,再弄。
(3)后面的高级例程打算用UCOS-III + emWin 5.16来做。
硬件设计
beep.jpg
程序设计
void BEEP_InitHard(void);
void BEEP_Start(uint16_t _usBeepTime, uint16_t _usStopTime, uint16_t _usCycle);
void BEEP_Stop(void);
void BEEP_KeyTone(void);
void BEEP_Poll(void);
void BEEP_Poll(void)
{
    if ((g_tBeep.ucEnalbe == 0) || (g_tBeep.usStopTime == 0))
    {
        return;
    }
    /* 状态0用于处理蜂鸣器发声时间 */
    if (g_tBeep.ucState == 0)
    {   
        /* 间断发声 */
        if (g_tBeep.usStopTime > 0)   
        {
            if (++g_tBeep.usCount >= g_tBeep.usBeepTime)
            {
                BEEP_DISABLE();        /* 停止发声 */
                g_tBeep.usCount = 0;
                g_tBeep.ucState = 1;
            }
        }
        /* 不做任何处理,连续发声 */
        else
        {
            ;   
        }
    }
    /* 状态1用于处理蜂鸣器停止发声时间和周期调整 */
    else if (g_tBeep.ucState == 1)
    {
        if (++g_tBeep.usCount >= g_tBeep.usStopTime)
        {
            /* 连续发声时,直到调用stop停止为止 */
            if (g_tBeep.usCycle > 0)
            {
                if (++g_tBeep.usCycleCount >= g_tBeep.usCycle)
                {
                    /* 循环次数到,停止发声 */
                    g_tBeep.ucEnalbe = 0;
                }
                if (g_tBeep.ucEnalbe == 0)
                {
                    g_tBeep.usStopTime = 0;
                    return;
                }
            }
            g_tBeep.usCount = 0;
            g_tBeep.ucState = 0;
            BEEP_ENABLE();            /* 开始发声 */
        }
    }
}
程序下载
实验二:蜂鸣器.zip (11.97 MB, 下载次数: 682)
天天向上
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 11:34 , Processed in 0.207916 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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