本帖最后由 Wang188 于 2019-3-31 09:31 编辑

实在不好意思,这两周实习没时间调板子,另外一篇肯定也会这两天补上的。也看了编程规范,确实学到了新的东西,以前写程序相对来说还是比较随意的。
这两天主要是看了看RGB流水灯printf打印串口以及触摸按键的使用,不在细数。
恰好生日刚过去,就打算用蜂鸣器写个生日快乐,代码放到下面了,感觉还是略难调,希望大家能给予指点。
QQ图片20190329170710.png
QQ图片20190329170635.png 原理图如图所示
看到无源蜂鸣器是接到了PA8 用的是TIM1_CH1
初始化为复用推挽输出 SP6203提供的3.3V供电
蜂鸣器发声的两个关键函数是
void music(unsigned int a)
  • {
  •         unsigned int b;
  •         b = a/2;
  •         TIM_SetAutoreload(TIM1,a);
  •         TIM_SetCompare1(TIM1,b);
  •         GPIO_ResetBits(GPIOA, GPIO_Pin_3);
  •         Delay(250);
  • //        TIM_SetAutoreload(TIM1,0);
  •         TIM_SetCompare1(TIM1,0);
  •         GPIO_SetBits(GPIOA, GPIO_Pin_3);
  •         Delay(20);
  •         Touch_Key_Proc();
  • }
  • void fast_music(unsigned int a)
  • {
  •         unsigned int b;
  •         b = a/2;
  •         TIM_SetAutoreload(TIM1,a);
  •         TIM_SetCompare1(TIM1,b);
  •         GPIO_ResetBits(GPIOA, GPIO_Pin_3);
  •         Delay(100);
  • //        TIM_SetAutoreload(TIM1,0);
  •         TIM_SetCompare1(TIM1,0);
  •         GPIO_SetBits(GPIOA, GPIO_Pin_3);
  •         Delay(30);
  • }
  • 复制代码
    可以看出是改变TIM1->AAR和CCR1来发出声音准备工作完成
    找到生日快乐的歌谱

    注意延时的时间加上即可
    调试感觉不方便  建议大家可以上淘宝搜一下相关模块
    生日快乐.zip (9.09 MB, 下载次数: 6)
    全部回复 2
    • 4 主题
    • 7 帖子
    • 379 积分
    身份:LV2 初级技术员
    E币:314
    一个地方写错了 蜂鸣器供电是由LM1117提供的
    • 1045 主题
    • 4603 帖子
    • 20062 积分
    身份:LV8 高级工程师
    E币:5300
    写的好 支持
    回复楼主
    您需要登录后才可以评论 登录 立即注册