当前位置: 首页 > news >正文

广州做公司网站哦咪咖网站建设

广州做公司网站,哦咪咖网站建设,租机网站开发,学校网站建设怎么样开发板#xff1a;野火霸天虎V2 单片机#xff1a;STM32F407ZGT6 开发软件#xff1a;MDKSTM32CubeMX 文章目录 前言一、找一篇音乐的简谱二、确定音调三、确定节拍四、使用STM32CubeMX生成初始化代码五、代码分析 前言 本实验使用的是低电平触发的无源蜂鸣器 无源蜂鸣器是… 开发板野火霸天虎V2 单片机STM32F407ZGT6 开发软件MDKSTM32CubeMX 文章目录 前言一、找一篇音乐的简谱二、确定音调三、确定节拍四、使用STM32CubeMX生成初始化代码五、代码分析 前言 本实验使用的是低电平触发的无源蜂鸣器 无源蜂鸣器是指没有振荡源的蜂鸣器因此必须使用一定频率的方波才能驱动它发声所以无源蜂鸣器播放音乐的本质就是使用定时器的PWM随着节奏拍调节延时、根据音符调节驱动信号的频率这样就能播放音乐了。 STM32无源蜂鸣器播放孤勇者 一、找一篇音乐的简谱 找一篇稍微简单点的音乐的简谱我这里找的是孤勇者。 二、确定音调 ① 确定音调区分高中低音很简单就看数字上方下方有没有点。 ② 确定音调对应的频率如下图所示。 ③ 定义一个常量浮点型数组把各音名对应的频率放入。 const float pitch_name_frequency[21] {//低音//1 2 3 4 5 6 7261.63, 293.67, 329.63, 349.23, 391.99, 440, 493.88,//0-6//中音//1 2 3 4 5 6 7532.25, 587.33, 659.25, 698.46, 783.99, 880, 987.76,//7-13//高音//1 2 3 4 5 6 71046.50,1174.66,1318.51,1396.92,1567.98,1760, 1975.52//14-20 };④ 开始抄吧定义一个常量无符号8位类型数组把乐谱音名对应频率数组序号放入抄的过程一定仔细一不小心就可能抄错。 0代表休止符不发声这里用21表示方便后续判断处理抄完结果如下每一行都与简谱对应。 const uint8_t gu_yong_zhe[] {9,21,21,7,8,7,9,21,7,8,7,8,9,5,7,5,7,5,7,8,7,6,21,21,9,21,21,7,8,7,9,21,7,8,7,8,9,5,7,5,7,5,7,9,8,6,21,21,5,7,12,12,12,12,11,12,12,11,12,11,12,11,9,9,9,21,21,5,7,12,12,12,11,12,11,13,13,13,12,13, 13,12,9,9,21,9,11,9,8,9,8,9,8,9,11,9,11,9,8,9,8,9,8,21,7,8,9,5,7,9,8,9,8,7,7,5,21,21,12,13,14,15,13,14,14,14,13,14,15,13,14,14,14,15,16,15,16,15,16,16,15,16,18,16,12,13,14,15,13,14,14,14,13,14,15,13,14,14,14,15,16,15,16,15,16,16,15,16,18,16,18,16,18,16,18,16,18,19,16,18,18,16,18,16,18,16,18,19,16,18,18,18,16,15,15,15,14,16,16,15,15,15,14,14,12,21,21,18,18,16,15,15,15,14,16,16,15,15,15,14,14,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,11,12,11,12,11,12,11,12,12,11,12,11,12,11,9,9,9,21,21,12,11,12,11,12,11,12,11,13,13,13,12,13,12,9,9,9,21,21,9,11,9,8,9,8,9,8,9,11,9,11,9,8,9,8,9,8,21,7,8,9,12,14,16,15,16,15,14,14,12,21,12,13,12,5,7,9,13,13,13,13,12,12,12,21,5,7,9,13,13,13,13,12,12,12,21,12,13,12,21,21 };三、确定节拍 确定音乐的节拍也就是PWM持续的时间即延时时间。 我们看表格的第一列音符右方、下方的短横线和右方的圆点共同表示音符的时长。 以音符5为例设音符 5 (即1拍)延时时间tdelay4x。 右方增加1条横线表示延时时间增加1倍5 - 的延时时间tdelay8x加2条横线表示增加2倍5 - -的延时时间tdelay12x。 右方增加1个圆点表示延时时间增加一个半拍5 · 的延时时间tdelay6x。 下方增加1条横线表示延时时间减少一半tdelay2x下方增加2条横线表示延时时间减少为1/4tdelayx。 因为孤勇者中最小的是1/4拍因此取1/4拍为单位时间定义一个常量无符号8位类型数组将简谱上音名对应节拍抄入又是一个漫长的过程。 结果如下。 const uint8_t beat[] {8,4,1,1,1,1,8,3,1,1,1,1,1,3,1,3,1,3,1,2,2,8,4,4,8,4,1,1,1,1,8,3,1,1,1,1,1,3,1,3,1,3,1,2,2,8,4,4,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,3,4,4,2,1,1,3,1,1,1,1,1,3,1,1,1,2,1,2,1,8,1,1,1,1,3,1,3,1,3,1,1,1,1,1,3,1,3,1,4,2,1,1,2,2,2,2,3,1,1,1,2,8,4,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,2,2,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,2,2,2,2,3,1,3,1,1,1,1,1,2,2,3,1,3,1,1,1,1,1,2,1,1,1,1,2,2,1,1,1,1,2,2,1,1,8,4,2,1,1,1,1,2,2,1,1,1,1,2,2,1,1,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,1,1,3,1,1,1,1,1,2,1,1,1,1,1,1,1,3,4,4,2,1,1,3,1,1,1,1,1,3,1,1,1,1,1,1,3,4,4,1,1,1,1,3,1,3,1,3,1,1,1,1,1,3,1,3,1,4,2,1,1,2,2,2,2,3,1,1,1,2,12,2,1,1,2,2,2,2,4,2,1,1,1,3,12,2,2,2,2,4,2,1,1,1,3,8,2,1,1,8,4,4 };四、使用STM32CubeMX生成初始化代码 点击Clock Configuration配置时钟树F407ZGT6最大时钟为168MHz。 点击Pinout Configuration配置RCC。 配置SYS。 配置TIM时钟源为内部时钟通道1为PWM生成。 配置参数PSC设置为0不分频ARR、Pulse都可以设置为0因为后面程序中会修改的注意Mode设置为PWM Mode 1CH Polarity(通道有效极性)设置为0因为我使用的是低电平触发的无源蜂鸣器。 将TIM2通道1的GPIO引脚速度改为高。 点击Project配置工程名、位置、IDE及IDE版本。 勾选这两项将所有库文件复制到工程文件夹、每个初始化外设生成一个.c和.h文件下面这项必勾。 生成代码打开工程。 五、代码分析 ARR寄存器的值控制着PWM的周期、频率因为F407 TIM2时钟已经配置为不分频所以fcnt84MTcnt1/84 * 10-6sTpwm ARR * Tcnt 所以fcnt ARR * fpwmARR fcnt / fpwm fcnt84Mfpwm音调对应频率pitch_name_frequency[gu_yong_zhe[i]]。开始生成PWM根据节拍延时一段时间关闭PWM。注意关闭PWM后清零CNT计数器不然会发生错误。代码__HAL_TIM_SetCounter(htim2, 0); void play_music(void) {uint32_t i, delay_time, tune;for(i0;i(sizeof(gu_yong_zhe)/sizeof(gu_yong_zhe[0]));i){delay_time beat[i] * 250; //250ms 1/4拍 1s 1拍if(gu_yong_zhe[i] ! 21) // 不是休止符{tune (uint32_t)84*1000*1000/pitch_name_frequency[gu_yong_zhe[i]]; // __HAL_TIM_SetAutoreload(htim2, tune); // 和下一句作用一样TIM2-ARR tune; // 改变频率 // __HAL_TIM_SetCompare(htim2, TIM_CHANNEL_1, tune/2); // 和下一句作用一样TIM2-CCR1 tune/2; // 占空比为50%HAL_TIM_PWM_Start(htim2, TIM_CHANNEL_1);HAL_Delay(delay_time); // 根据节拍延时HAL_TIM_PWM_Stop(htim2, TIM_CHANNEL_1);__HAL_TIM_SetCounter(htim2, 0); // CNT寄存器值清0不然会发生错误}else // 是休止符{HAL_TIM_PWM_Stop(htim2, TIM_CHANNEL_1);HAL_Delay(delay_time);}} }
http://www.hkea.cn/news/14533178/

相关文章:

  • 住建网站需多少钱权威的徐州网站建设
  • 做免费网站安全吗app开发软件开发公司
  • 如何在虚拟空间上做多个网站域名备案时网站名称
  • 做博客网站需要工具吗金华做网站的公司
  • 东营市公司网站建设价格怎么做网站加载动画
  • 开发网站需要什么开发工具wordpress tag生成的链接乱
  • 某公司的网站建设的资金预算书wordpress is_category()
  • 企业网站pr值低怎么办做网站的空间需要买吗
  • 建设一个手机网站首页乐清市宏杉网络科技有限公司
  • 衡水网站建设找谁网上商城建站工作室
  • 网页素材有哪几大类整站seo排名要多少钱
  • 哪里的网站建设大连仟亿科技网站建设公司 概况
  • 导航网站系统sage wordpress
  • 可信网站认证收费吗网站建站服务公司
  • 国内哪个网站是做电子元器件的如何建设游戏网站
  • 烟台做网站谁家好苏州旅游必去十大景点
  • 什么app做网站wordpress传上去
  • 酒店网站建设方案策划如何刷关键词指数
  • 网站空间备份搜索网站哪个好
  • 做网站分辨率修改网站维护的过程及方法
  • soho的网站怎么做dw软件入门教程
  • 国外 图片网站小程序开发平台哪家品质好
  • 国家中职示范校建设专题网站致设计网站官网
  • wordpress整个网站响应速度慢网络设计课
  • 景安网站备案表格企业自助建站系统源码
  • 福州网站制作计划上海财务外包公司
  • 做搜狗手机网站快凡科
  • 上海做网站找哪家好百度云服务器安装wordpress
  • 自然堂网站建设情况网站开发培训网
  • 做网站 用什么语言只做dnf的网站