STM8 开发故事--之蜂鸣器 BEEP设计简单的音乐(三)

本文介绍了如何在STM8单片机上使用蜂鸣器播放简单音乐,通过设置时间中断和TIM1配置来控制音调和节拍。文章详细阐述了中断服务程序的实现,包括音乐乐谱、音调和节拍的定义,并强调了中断在嵌入式开发中的重要性,以提高系统效率并降低功耗。
摘要由CSDN通过智能技术生成

STM8 开发故事--之蜂鸣器 BEEP设计简单的音乐(三)

虽然我也不识音律。但是不妨碍我欣赏音乐。

要让单片机和蜂鸣器发出音乐必须知道音调和节拍的概念。

音调就是声音的频率,节拍就是这个频率保持的时间。通过对音调和节拍的不同组合就会发出音乐,至于是否悦耳动听则另当别论。

频率可以通过TIM1_TimeBaseInit(2,TIM1_CounterMode_Up,240,0); 函数来设置。

节拍可以写一个delay程序来实现。如果在main里面用delay来实现时间控制,会占用大量CPU资源。一般的做法是创建一个时间中断。我一般会创建一个60hz的时间中断。在时间中断里面处理如按键读取及防抖,音乐播放等功能,其他可以后台处理的程序。我以前在51上用时间中断实现了多任务同时工作的效果。别人用3颗51才能完成的功能我1颗就实现了。

在stm8项目里我用timer2启动时间中断服务程序。先设置tmi2

//tim2 发起中断 中断服务程序在 INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_USART2_TX_IRQHandler, 19)
 void TIM2_Config(void)
{
    TIM2_DeInit();
    CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE); 
    TIM2_TimeBaseInit(TIM2_Prescaler_16, TIM2_CounterMode_Up, 1014);
    TIM2_SetCounter(500);                                
    TIM2_ITConfig(TIM2_IT_Update, ENABLE);
    TIM2_ARRPreloadConfig(ENABLE);
    TIM2_Cmd(ENABLE);      

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值