型号:STM32G030C8Tx
无源蜂鸣器
音调定义:
![图来自网络](https://i-blog.csdnimg.cn/blog_migrate/e29ee6cf8d8f979180d7d4a6a28aed54.png)
#define ZERO 3000
#define R 1000000 //F_CLOCK/(psc+1)=48M/(47+1)=1M
//set tune *****************
#define L1 (R/262)-1 //C获do或1
#define half_L1 (R/277)-1 //C#(下面同理)
#define L2 (R/294)-1
#define half_L2 (R/311)-1
#define L3 (R/330)-1
#define L4 (R/349)-1
#define half_L4 (R/370)-1
#define L5 (R/392)-1
#define half_L5 (R/410)-1
#define L6 (R/440)-1
#define half_L6 (R/466)-1
#define L7 (R/494)-1
#define M1 (R/523)-1
#define half_M1 (R/554)-1
#define M2 (R/587)-1
#define half_M2 (R/622)-1
#define M3 (R/659)-1
#define M4 (R/698)-1
#define half_M4 (R/740)-1
#define M5 (R/784)-1
#define half_M5 (R/831)-1
#define M6 (R/880)-1
#define half_M6 (R/932)-1
#define M7 (R/988)-1
#define H1 (R/1046)-1
#define half_H1 (R/1109)-1
#define H2 (R/1175)-1
#define half_H2 (R/1245)-1
#define H3 (R/1318)-1
#define H4 (R/1397)-1
#define half_H4 (R/1480)-1
#define H5 (R/1568)-1
#define half_H5 (R/1661)-1
#define H6 (R/1760)-1
#define half_H6 (R/1865)-1
#define H7 (R/1967)-1
使用PWM控制,对应定时器反向通道
设计延迟:
const uint32_t Delayer=400; //此处我以400ms为一拍分割
void tim1(uint16_t tune)
{
__HAL_TIM_SET_AUTORELOAD(&htim17,tune);
__HAL_TIM_SET_COMPARE(&htim17,TIM_CHANNEL_1,0.5*tune);
HAL_Delay(Delayer); //用了MXCUBE和HAL库
}
/* 预热
half_M4
half_H1
half_H4
H3
half_H1
*/
/*高潮
第一段
half_M4
half_M1
M7
M6
half_M5
M3
M6
M7
half_H1
M3
half_M5
M6
第二段
half_M4
half_M1
M7
M6
half_M5
M3
M1
M3
half_M5
half_M4
half_M5
M6
*/
P.S.没多少乐理基础,拿模拟键盘乱扒的,if有错,见谅