STM32 cubemx下配置无源蜂鸣器输出PWM波并放音乐代码两只老虎
上一篇文章代码
链接: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波并放音乐代码两只老虎相关推荐
- STM32 cubeMX下配置STM32单片机使无源蜂鸣器输出PWM波并放音乐
1.首先我们要了解定时器(timer) timer分为三种:高级定时器(tim1,tim8),基本定时器(tim6,tim7),通用定时器(tim2,tim3,tim4,tim5). 基本定时器:它有 ...
- STM32单片机:定时器TIM输出PWM波
学习32单片机过程中使用的工具:MDK Keil5 + 正点原子精英版(STM32F103ZET6)+ STM32CubeMX + HAL开发 一.PWM的产生原理 关于PWM的产生原理网上有很多教程 ...
- STM32学习笔记:通用定时器输出PWM
脉冲宽度调制,简称PWM(Pulse Width Modulation)是利用微处理器的数字输出 对模拟电路进行控制的一种非常有效的控制技术,常用于控制Led灯的亮度.电机转速等. STM32 的定时 ...
- 第一章 stm32 cubemx基础配置实验以及proteus 8的使用
第一章 stm32 cubemx基础配置实验以及proteus 8的使用 文章目录 第一章 stm32 cubemx基础配置实验以及proteus 8的使用 前言 一.STM32 Cubemx基础配置 ...
- STM32CubeMX——LED定时闪烁和输出PWM波
简介 通过学习STM32CubeMX软件,掌握配置各个部件的基本方法:了解外部中断,定时器中断,PWM波产生等功能的原理,编写程序代码,实现相应的功能. 程序预期结果: LED初始设置间隔2秒闪烁一次 ...
- 树莓派输出pwm波c语言,02树莓派4B—C语言编程——PWM
01树莓派直接输出PWM波 -- 硬件PWM程序 (推荐使用) #include #include #include //必不可少 int main( void) { int pwm_gpio5 = ...
- STM32f103C8定时器输出PWM波信号
利用stm32高级定时器输出PWM,模拟呼吸灯的效果带刹车功能.由于没有示波器查看输出的pwm波形图,所以本次实验使用普通直流电机模拟的. 本文章为学习笔记,其中有些地方解释的不是那么的好,即本笔记可 ...
- STM32F7同一定时器多路输出PWM波通道之间相互影响问题
--------------------------2020/8/12更新-------------------------------- 这次用Cube直接生成PWM控制代码,然后再RT-Threa ...
- STM32F103 PA8不能输出PWM波问题
在调试STM32F103单片机输出PWM波时,单独测试PA8和PA11输出PWM波(也就是TIM1_CH1和TIM1_CH4),输出PWM波正常.然后用串口1输出数据时,发现一个问题,串口输出正常,但 ...
- pwm波如何控制电机代码_PWM波控制720电机
详细方案四:pwm与720电机控制 电机硬件分析 什么是电机? 电机(俗称"马达")是指依据电磁感应定律实现电能转换或传递的一种电磁装置.它的主要作用是产生驱动转矩,作为用电器或各 ...
最新文章
- [JAVA]寻找满足和的最短子序列(Minimum Size Subarray Sum)
- AndroidStudio SSL peer shut down incorrectly
- ginkgo php,【行业资讯】PHP 开发框架 ginkgo v0.1.2 发布
- 什么是通信卫星有效载荷(payload)
- 九种分布式ID生成方式
- springmvc jsp java_java-jsp springmvc-controller 传值到页面的方法
- Win10镜像安装pytorch-gpu版
- 将VS2010的工程转换为VS2005,即用VS2005打开
- 文件夹变exe怎么办
- 用TEXT函数解决日期用连接字符日期变成数字格式的问题
- php tp6 错误接管分析,ThinkPHP5 异常接管
- execute,executeQuery,executeUpdate三个方法有什么区别呢?
- 为什么 Redis 单线程却能支撑高并发?
- 2022年数据分析决赛试题简要分析
- 联想E430Cwindow8系统换成win7
- vscode远程连接机器开发,总显示setting up: downloading vs code server
- 10进制计数器Verilog编程
- WIFI模块连接手机
- ideal 首次使用无法导入jar包问题
- UG塑胶模具设计三维建模吉他模型,适合新手
热门文章
- day03【JS基础】JS运算符、条件判断、循环语句、普通函数、 匿名函数、轮播图的实现、JS事件【重点】、页面交互、String 对象、Array 对象、Date 对象、Math 对象、全局函数
- Android 13.0 系统多个播放器app时,设置默认播放器
- 如何简单快速搭建 Android 大仓 1
- M60许可的下载说明
- 【条形码识别】基于matlab GUI条形码识别【含Matlab源码 2553期】
- 趣活逆势大涨超20%,但依然被低估了
- Xcode(14.3)运行项目报错:File not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault
- uni-app 学习总结
- consecutive audit items have failed
- 低功耗蓝牙cc2541学习笔记之LED-2