上一篇文章代码
链接:https://blog.csdn.net/qq_42153903/article/details/88714155
enum
{
UNUSED=0,
DO,
RE,
MI,
FA,
SO,
LA,
XI,
DO1,
RI1,
TONE_MAX,
};
uint16_t tone_freq[TONE_MAX] = {0, 1047, 1175, 1319, 1397, 1568, 1760, 1967, 4186, 4698 };
typedef struct tone_s
{
int tone;
int delay_ms;

} tone_t;

#define DEF_DELAY 350
static tone_t tiger_notation[]=
{
{DO, DEF_DELAY},
{RE, DEF_DELAY},
{MI, DEF_DELAY},
{DO, DEF_DELAY*2},

{DO, DEF_DELAY},
{RE, DEF_DELAY},
{MI, DEF_DELAY},{DO, DEF_DELAY*2},{MI, DEF_DELAY},{FA, DEF_DELAY},{SO, DEF_DELAY*2},{MI, DEF_DELAY},{FA, DEF_DELAY},{SO, DEF_DELAY*2},{SO, DEF_DELAY},{LA, DEF_DELAY},{SO, DEF_DELAY},{FA, DEF_DELAY},{MI, DEF_DELAY},{DO, DEF_DELAY*2},{SO, DEF_DELAY},{LA, DEF_DELAY},{SO, DEF_DELAY},{FA, DEF_DELAY},{MI, DEF_DELAY},{DO, DEF_DELAY*2},{RE, DEF_DELAY},{SO, DEF_DELAY},{DO, DEF_DELAY*2},{RE, DEF_DELAY},{SO, DEF_DELAY},{DO, DEF_DELAY*2},

};
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
int turn_passive_beep(int cmd, int freq)
{
int range;
if(OFF == cmd)
{
HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2) ;
}
else
{
if(freq<1000 || freq>5000)
{
printf(“Beep set invalid PWM frequency[%d]!\n”, freq);
return -1;
}

    /* Set PWM clock: 80MHz/169=500KHz */htim2.Init.Prescaler = 160-1;/* Set PWM frequency */range=500000/freq;htim2.Init.Period = range;if (HAL_TIM_PWM_Init(&htim2) != HAL_OK){Error_Handler();}/* Set PWM duty 50% */TIM_OC_InitTypeDef sConfigOC;sConfigOC.OCMode = TIM_OCMODE_PWM1;sConfigOC.Pulse = (htim2.Init.Period/3);sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK){Error_Handler();}HAL_TIM_MspPostInit(&htim2);HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
}return 0;

}
static inline void play_tone(int tone, int delay)
{
if(tone<DO || tone>RI1)
return ;

            turn_passive_beep(ON, tone_freq[tone]);Delay_ms(delay);
turn_passive_beep(OFF, 0);

}
void play_tiger(void)
{
int i;

for(i=0; i<ARRAY_SIZE(tiger_notation); i++)
{play_tone(tiger_notation[i].tone, tiger_notation[i].delay_ms);Delay_ms(30);
}

}

STM32 cubemx下配置无源蜂鸣器输出PWM波并放音乐代码两只老虎相关推荐

  1. STM32 cubeMX下配置STM32单片机使无源蜂鸣器输出PWM波并放音乐

    1.首先我们要了解定时器(timer) timer分为三种:高级定时器(tim1,tim8),基本定时器(tim6,tim7),通用定时器(tim2,tim3,tim4,tim5). 基本定时器:它有 ...

  2. STM32单片机:定时器TIM输出PWM波

    学习32单片机过程中使用的工具:MDK Keil5 + 正点原子精英版(STM32F103ZET6)+ STM32CubeMX + HAL开发 一.PWM的产生原理 关于PWM的产生原理网上有很多教程 ...

  3. STM32学习笔记:通用定时器输出PWM

    脉冲宽度调制,简称PWM(Pulse Width Modulation)是利用微处理器的数字输出 对模拟电路进行控制的一种非常有效的控制技术,常用于控制Led灯的亮度.电机转速等. STM32 的定时 ...

  4. 第一章 stm32 cubemx基础配置实验以及proteus 8的使用

    第一章 stm32 cubemx基础配置实验以及proteus 8的使用 文章目录 第一章 stm32 cubemx基础配置实验以及proteus 8的使用 前言 一.STM32 Cubemx基础配置 ...

  5. STM32CubeMX——LED定时闪烁和输出PWM波

    简介 通过学习STM32CubeMX软件,掌握配置各个部件的基本方法:了解外部中断,定时器中断,PWM波产生等功能的原理,编写程序代码,实现相应的功能. 程序预期结果: LED初始设置间隔2秒闪烁一次 ...

  6. 树莓派输出pwm波c语言,02树莓派4B—C语言编程——PWM

    01树莓派直接输出PWM波 -- 硬件PWM程序  (推荐使用) #include #include #include //必不可少 int main( void) { int pwm_gpio5 = ...

  7. STM32f103C8定时器输出PWM波信号

    利用stm32高级定时器输出PWM,模拟呼吸灯的效果带刹车功能.由于没有示波器查看输出的pwm波形图,所以本次实验使用普通直流电机模拟的. 本文章为学习笔记,其中有些地方解释的不是那么的好,即本笔记可 ...

  8. STM32F7同一定时器多路输出PWM波通道之间相互影响问题

    --------------------------2020/8/12更新-------------------------------- 这次用Cube直接生成PWM控制代码,然后再RT-Threa ...

  9. STM32F103 PA8不能输出PWM波问题

    在调试STM32F103单片机输出PWM波时,单独测试PA8和PA11输出PWM波(也就是TIM1_CH1和TIM1_CH4),输出PWM波正常.然后用串口1输出数据时,发现一个问题,串口输出正常,但 ...

  10. pwm波如何控制电机代码_PWM波控制720电机

    详细方案四:pwm与720电机控制 电机硬件分析 什么是电机? 电机(俗称"马达")是指依据电磁感应定律实现电能转换或传递的一种电磁装置.它的主要作用是产生驱动转矩,作为用电器或各 ...

最新文章

  1. [JAVA]寻找满足和的最短子序列(Minimum Size Subarray Sum)
  2. AndroidStudio SSL peer shut down incorrectly
  3. ginkgo php,【行业资讯】PHP 开发框架 ginkgo v0.1.2 发布
  4. 什么是通信卫星有效载荷(payload)
  5. 九种分布式ID生成方式
  6. springmvc jsp java_java-jsp springmvc-controller 传值到页面的方法
  7. Win10镜像安装pytorch-gpu版
  8. 将VS2010的工程转换为VS2005,即用VS2005打开
  9. 文件夹变exe怎么办
  10. 用TEXT函数解决日期用连接字符日期变成数字格式的问题
  11. php tp6 错误接管分析,ThinkPHP5 异常接管
  12. execute,executeQuery,executeUpdate三个方法有什么区别呢?
  13. 为什么 Redis 单线程却能支撑高并发?
  14. 2022年数据分析决赛试题简要分析
  15. 联想E430Cwindow8系统换成win7
  16. vscode远程连接机器开发,总显示setting up: downloading vs code server
  17. 10进制计数器Verilog编程
  18. WIFI模块连接手机
  19. ideal 首次使用无法导入jar包问题
  20. UG塑胶模具设计三维建模吉他模型,适合新手

热门文章

  1. day03【JS基础】JS运算符、条件判断、循环语句、普通函数、 匿名函数、轮播图的实现、JS事件【重点】、页面交互、String 对象、Array 对象、Date 对象、Math 对象、全局函数
  2. Android 13.0 系统多个播放器app时,设置默认播放器
  3. 如何简单快速搭建 Android 大仓 1
  4. M60许可的下载说明
  5. 【条形码识别】基于matlab GUI条形码识别【含Matlab源码 2553期】
  6. 趣活逆势大涨超20%,但依然被低估了
  7. Xcode(14.3)运行项目报错:File not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault
  8. uni-app 学习总结
  9. consecutive audit items have failed
  10. 低功耗蓝牙cc2541学习笔记之LED-2