你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】stm32单片机 代码实现歌曲——红尘情歌

[复制链接]
STMCU小助手 发布时间:2022-5-26 21:01
mian.c2 j% |' ]/ R1 L5 l7 A9 q, ]# z
3 ~2 R7 j. H3 x( w% a8 _( t
  1. #include "sys.h"        2 X  X" \* u$ O
  2. #include "delay.h"        
    0 E4 {% w4 t! \0 y* t' R0 r
  3. #include "led.h" 0 w  B' j/ ]. p% o, Y
  4. #include "beep.h". ]( S  r$ d) J  V2 w2 d6 U
  5. u8 music[]={
    & P) U+ L' X% ]0 R8 E
  6.         5,10,10,5,5,9,9,16,8,8,8,9,10,5,5,16, //???????,???????  M" b7 N- @/ r6 u; N2 N* I$ S
  7.         6,8,8,6,5,10,10,16,9,8,8,6,9,16, //???????,?????! U; q- i2 F0 j0 A8 C" G! l
  8.         5,10,10,5,5,9,9,16,8,8,8,6,5,10,10,16, //???????,???????; j  i7 i" i) x9 {' {5 a+ k
  9.         6,11,11,6,5,10,10,16,9,8,8,6,8,16, //???????,?????
    ! H3 m' W7 E) O6 o- S+ P7 b. J6 U( _
  10.         5,12,5,5,12,5,9,16,8,6,8,8,8,10,12,16, //???????,???????!3 B7 F1 U7 {& F% {5 m) O5 |
  11.         8,6,8,8,8,13,12,10,9,8,6,8,8,10,9,16, //??????,?????,?????
    , ~9 J$ y& r& o8 b4 S' S; p0 @0 b  g
  12.         5,12,5,5,12,5,9,16,8,6,8,8,13,12,16, //???????,??????
    + o# A% B- [; m% |) M( o/ l5 Y
  13.         8,8,8,13,12,10,9,8,6,8,8,9,8,16, //?????????,??????
    % s1 A" K/ ]! k& t" ~2 u
  14. };
    1 S5 E$ e4 I5 K9 e% J
  15. u8 time[] = {
    9 |  j0 ^! ~+ B7 D- g
  16.         4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, //???????,???????  s. G3 Z+ ]" W$ n; L
  17.         4,4,4,4,4,4,4,4,4,4,4,4,8,4, //???????,?????# w# {0 l  z3 a  u
  18.         4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, //???????,???????
    $ S& _# X1 g0 ~0 u' d
  19.         4,4,4,4,4,4,4,4,4,4,4,4,8,4, //???????,?????
    ) Z, W; M8 ]' O1 u- I
  20.         4,4,2,2,4,4,4,4,4,4,2,2,4,4,8,4, //???????,???????!5 Z0 o; J* w1 f( X
  21.         4,4,2,2,4,4,4,4,4,4,4,4,4,4,8,4, //??????,?????,?????
    3 h- R) U; m& ~: k  ?9 T
  22.         4,4,2,2,4,4,4,4,4,4,4,4,4,8,4, //???????,??????
    + A9 I2 L$ h. W! k
  23.         4,4,4,4,4,4,4,4,4,4,4,4,8,4, //?????????,??????
    7 m* l6 z4 }; z# T) G: j
  24. };
    6 G- a3 z+ [0 k7 S
  25. void Sound(u16 frq)2 [. i4 y6 I, w: d; [/ U
  26. {   / ^( o+ `/ N- u( ^1 `! |% D
  27.     u32 n;
    ( a( q2 h: Q) K
  28.     BEEP = 0;! m& b; S7 G0 N
  29.     if(frq != 1000)
    ' p) m( R+ {$ u; M2 A' E9 Y+ [% P
  30.     {
    6 A: T+ X+ @$ P/ X
  31.         n = 500000/((u32)frq);
    / u( o  T- \1 u
  32.         BEEP = 0;" U$ n( J7 H8 c3 [8 R$ `
  33.         delay_us(n);
    " I5 M) z1 ]6 ^
  34.         BEEP = 1;, y3 }7 I4 n$ _8 `0 S* s
  35.         delay_us(n);6 }7 r' n7 O  @+ u) \; J
  36.     }
    6 S1 W: Q7 i$ g" ]
  37.     else; j3 G/ o2 j- R) r1 D1 j
  38.     {
    . F* ]3 I2 j' P8 I+ x' D$ ^
  39.             delay_us(1000);# A3 W% V/ _$ I' d3 y
  40.     }         ) s9 J9 H* s. ~; V3 w9 o8 U
  41. }
    # D' Q8 @6 v  Y: G% `4 {( }
  42. void play(void)
    + X' q! L( h7 L- k+ a
  43. {# f. d7 W! }: F3 p6 d
  44.          uc16 tone[] = {247,262,294,330,349,392,440,494,523,587,659,698,784,1000};//?????9 H2 j' w5 }) \, O; X9 x
  45. u8 music[]={      
    6 Z. Q& `1 N1 v$ \& g) ~
  46.         5,5,6,8,7,6,5,6,13,13,//??. z5 O5 q' B7 B. C5 q
  47.         5,5,6,8,7,6,5,3,13,13,& k' {3 K7 H5 U/ K
  48.         2,2,3,5,3,5,6,3,2,1,
    * d2 F( G4 C  O4 b! a
  49.         6,6,5,6,5,3,6,5,13,13,
    1 N  ]) o5 f5 a# q2 |. x, j3 D# _' B& k
  50.         5,5,6,8,7,6,5,6,13,13,
    ! o& k/ }0 Y# A: K! q' ?% a
  51.         5,5,6,8,7,6,5,3,13,13,
    , @3 W! r* K/ X+ ^8 Q! R
  52.         2,2,3,5,3,5,6,3,2,1,) e  N2 d. [& F5 U5 l
  53.         6,6,5,6,5,3,6,1,   
    ' {$ \; v% o( l4 j& I
  54.         13,8,9,10,10,9,8,10,9,8,6,
    : g7 d1 N  @, B& X
  55.         13,6,8,9,9,8,6,9,8,6,5,6 l  @, \& [9 |" O
  56.         13,2,3,5,5,3,5,5,6,8,7,6,
    ! Y4 ^* ^  s% O6 V% @) d* o3 t, R
  57.         6,10,9,9,8,6,5,6,8
    & m$ b0 Q+ l2 ^* y$ b
  58. };     ( d9 ?" A5 z  e7 T1 u; i
  59. u8 time[] = {      
    3 h' l1 T6 z% p  S6 Q
  60.         2,4,2,2,2,2,2,8,4, 4, //??
    7 a$ t& ]6 z! `) {7 O
  61.         2,4,2,2,2,2,2,8,4, 4,  ~! {) F% {& j8 B% o4 t
  62.         2,4,2,4,2,2,4,2,2,8,
    : I8 A! v1 X7 F- [
  63.         2,4,2,2,2,2,2,8,4 ,4,
    . m& l, I6 ~2 h( I8 r
  64.         2,4,2,2,2,2,2,8,4, 4,
    % E0 V, H8 u% J0 t0 U$ P! o" y
  65.         2,4,2,2,2,2,2,8,4, 4,
    $ m- a4 M$ s6 y% P/ p6 b5 j
  66.         2,4,2,4,2,2,4,2,2,8,
    3 e% `4 g  n& w# A* A% c
  67.         2,4,2,2,2,2,2,8,
    1 q% z; v3 l8 e' S2 e# a+ w* |$ g
  68.         4, 2,2,2, 4, 2,2,2, 2,2,8,
    9 c6 }8 U6 Y2 K4 g" c
  69.         4, 2,2,2,4,2,2,2,2,2,8,$ M' L5 ^+ o' ?& s+ ]- S) e0 v
  70.         4, 2,2,2,4,2,2,5,2,6,2,4,
    5 L) W5 j! s; i
  71.         2,2 ,2,4,2,4,2,2,126 ]! Z) U8 S0 I+ a
  72. };     " h6 t+ g% c8 \* A( y( D
  73.     u32 yanshi;4 Y( w; A, G( m* r9 W' m+ A: n
  74.     u16 i,e;9 {  K) ]$ Z  a4 r
  75.     yanshi = 10;( i9 Y* A$ A- ~4 \( v  U
  76.     for(i=0;i<sizeof(music)/sizeof(music[0]);i++)- K9 Y; o. n7 Z( I
  77.     {
    4 E7 M* Y  u8 ~
  78.          for(e=0;e<((u16)time<i>)*tone[music<i>]/yanshi;e++)
    3 C1 ~* ?2 L) g7 s5 O- I# C: S
  79.          {+ s3 i) S4 j  s. v% M% m! A
  80.                  Sound((u32)tone[music<i>]);: w/ z. `5 t1 v
  81.          }      0 A. }0 |, s. r$ Y  g4 V: ^
  82.     }
    ! {) c$ e% y2 H& I% g- ]1 `
  83. }
    / [" g3 H% N6 o. V0 w0 Z
  84. int main(void)" [# O  C( \( _* Z; d4 a
  85. {4 a6 R7 c" ]4 u" r4 Z$ u- Z
  86.         delay_init();                     * G9 h2 g( n* q4 Q0 [# N- ?
  87.         LED_Init();                          
    - k4 ^' h) [5 I, I
  88.         BEEP_Init();                 ; B1 g0 z: v9 D% Q' P0 Q: L8 b& A/ E" n
  89.         BEEP = 0;
      ]. z. i. R1 ^" ?( p* f4 [
  90.         play();, r4 N' P- t* o2 {
  91.     while(1);                        
    . P2 q, c7 n& Z( ?
  92. }</i></i></i>
复制代码
! b6 x- t+ Z- L# J' e; S. C
beep.c
3 G8 P! L5 j. u% y3 X5 k. h% w1 v$ Y! R: n6 f
  1. #include "beep.h"0 v% p5 G# S/ b8 r2 e' c
  2. void BEEP_Init(void)
    2 Z  t) T9 F& r+ ^" l; Q% A
  3. {
    + q& ]$ B# P5 ]) X9 L" f
  4.         GPIO_InitTypeDef  GPIO_InitStructure;
    & O! y- l" l+ S; ~
  5.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);        7 y( y' Z8 R$ y/ n9 u  M0 y
  6.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                                 
    5 p; `& h" A3 J7 S$ n+ n& Z( K0 ~" B- G) n
  7.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                 
    4 y3 L2 F3 z+ A' `. |. e
  8.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         ( A- t" l/ F5 D9 |) R: Q! d
  9.         GPIO_Init(GPIOB, &GPIO_InitStructure);         
    # z4 s- o/ L# u8 a
  10.         GPIO_ResetBits(GPIOB,GPIO_Pin_8);( J; h$ W2 c4 t  o
  11. }
复制代码

% {2 {) ^, y# R: h9 \beep.h" D: @! A8 O" L
% s, W2 [; L$ E% r: {
  1. #ifndef __BEEP_H
    * H5 P1 k& @* _& S0 o$ ]
  2. #define __BEEP_H         4 n. Y3 H, E- W  d
  3. #include "sys.h"
    + D# ~$ @9 I( C, \4 o. C+ L
  4. #define BEEP PBout(8)5 F& i. L9 ]) |7 \. }% r6 w
  5. void BEEP_Init(void);                           
    . f; W( h1 L- I; X
  6. #endif
复制代码

+ e9 \! z) {/ a  S  `5 [1 z$ B
7 a9 |$ m  I; Y  t, B  E0 {. A* R
/ e! y+ _* s7 J- Q; b2 W
收藏 评论0 发布时间:2022-5-26 21:01

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版