请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

用最新库玩转智林STM32开发板(之七)------让开发板发出SOUND

[复制链接]
ddllxxrr 提问时间:2009-4-14 08:09 /
听说库又升级了哈,我的版本以是最新版,所以题目没改,我觉得ST这么升级下去对编程者没太大好处,大家都象智林老大,不用库算了.
唉,还得言归正传
智林板的喇叭接的是第TIM3的第3道,所以得编相应的程序.
#include     // STM32F10x Library Definitions

const unsigned int MusicData[7] = {30592,27257,24297,22922,20408,18182,16194};
void DelayNuS(unsigned int i)
{
        unsigned char t = 0;
        for(;i>0;i--)
        {
                for(t=0;t0;i--)
        {
                DelayNuS(1000);
        }
}

void SetBellF(unsigned int SetV)
{
        TIM_OCInitTypeDef TIM_OCInitStructure;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
        
        TIM_TimeBaseInitStructure.TIM_Period = SetV;
        TIM_TimeBaseInitStructure.TIM_Prescaler = 0;
        TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_Pulse = (SetV/2);
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
        TIM_OC3Init(TIM3, &TIM_OCInitStructure);
}

void Timer3Init(void)
{
        TIM_OCInitTypeDef TIM_OCInitStructure;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
        
        TIM_TimeBaseInitStructure.TIM_Period = 10000;
        TIM_TimeBaseInitStructure.TIM_Prescaler = 0;
        TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_Pulse = 5000;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
        TIM_OC3Init(TIM3, &TIM_OCInitStructure);
}
void Timer3OutEnable(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void Timer3OutDisable(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void Timer3Start(void)
{
        TIM_Cmd(TIM3, ENABLE);
}
void Timer3Stop(void)
{
        TIM_Cmd(TIM3, DISABLE);
}
void Timer3Test(void)
{
        Timer3Init();
  Timer3OutEnable();
        Timer3Start();
      while(1)
        {
                Timer3OutEnable();
                SetBellF(MusicData[0]);
                DelayNmS(400);
                SetBellF(MusicData[0]);
                DelayNmS(400);
                SetBellF(MusicData[4]);
                DelayNmS(400);
                SetBellF(MusicData[4]);
                DelayNmS(400);
                SetBellF(MusicData[5]);
                DelayNmS(400);
                SetBellF(MusicData[5]);
                DelayNmS(400);
                SetBellF(MusicData[4]);
                DelayNmS(400);
                DelayNmS(400);
                SetBellF(MusicData[3]);
                DelayNmS(400);
                SetBellF(MusicData[3]);
                DelayNmS(400);
                SetBellF(MusicData[2]);
                DelayNmS(400);
                SetBellF(MusicData[2]);
                DelayNmS(400);
                SetBellF(MusicData[1]);
                DelayNmS(400);
                SetBellF(MusicData[1]);
                DelayNmS(400);
                SetBellF(MusicData[0]);
                DelayNmS(400);
                DelayNmS(400);
                Timer3OutDisable();
                DelayNmS(1000);
        }
     
}

zl7.rar (31.19 KB, 下载次数: 32)
收藏 评论1 发布时间:2009-4-14 08:09

举报

1个回答
rockjablew 回答时间:2009-6-2 09:57:55

RE:用最新库玩转智林STM32开发板(之七)------让开发板发出SOUND

不知道声音效果怎么样

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版