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

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

[复制链接]
STMCU小助手 发布时间:2022-5-26 21:01
mian.c3 O1 y! i$ C, C# Q* T: R
/ ~& y; o4 v* C  s' C
  1. #include "sys.h"        
    : R: L  R" J& h; f
  2. #include "delay.h"        
    2 G3 l* X- |* i: H4 l, s4 u
  3. #include "led.h"
    4 z; _  s5 s* B( v3 b. k% X5 T
  4. #include "beep.h"1 \" o1 \1 J! f
  5. u8 music[]={
    : r/ m" L9 A0 N$ }
  6.         5,10,10,5,5,9,9,16,8,8,8,9,10,5,5,16, //???????,???????1 }! o) Q+ k$ }* G& L  C  x4 j# G
  7.         6,8,8,6,5,10,10,16,9,8,8,6,9,16, //???????,?????
    0 H4 P0 w, [2 |2 U6 T' M% {
  8.         5,10,10,5,5,9,9,16,8,8,8,6,5,10,10,16, //???????,???????
    6 }9 v, n6 v" ^. n
  9.         6,11,11,6,5,10,10,16,9,8,8,6,8,16, //???????,?????8 Q" Z! T4 n2 S0 c3 V
  10.         5,12,5,5,12,5,9,16,8,6,8,8,8,10,12,16, //???????,???????!  _5 K, i& v* l$ _& y4 p7 U
  11.         8,6,8,8,8,13,12,10,9,8,6,8,8,10,9,16, //??????,?????,?????
    - g1 y% T% }# Q: a& o$ ]7 U* b; ?- x! v
  12.         5,12,5,5,12,5,9,16,8,6,8,8,13,12,16, //???????,??????- \8 {* T: R2 k& S$ r0 q" X2 r
  13.         8,8,8,13,12,10,9,8,6,8,8,9,8,16, //?????????,??????- \. m5 A# c4 _# K: H
  14. };& |3 n5 ^. o/ U  e- D
  15. u8 time[] = {- N2 k7 M, v) P* t
  16.         4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, //???????,???????! v5 f) I/ b8 D( n8 u& a
  17.         4,4,4,4,4,4,4,4,4,4,4,4,8,4, //???????,?????" |3 e- }1 [  E/ [# s+ g- h- q  O
  18.         4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, //???????,???????+ F8 o. p' P9 D4 Y! G8 Z! s
  19.         4,4,4,4,4,4,4,4,4,4,4,4,8,4, //???????,?????# D9 S: a2 U7 `+ B) U
  20.         4,4,2,2,4,4,4,4,4,4,2,2,4,4,8,4, //???????,???????!
    - j9 v! w# d! e0 ^: ]
  21.         4,4,2,2,4,4,4,4,4,4,4,4,4,4,8,4, //??????,?????,?????
    * j$ B+ `/ O$ l
  22.         4,4,2,2,4,4,4,4,4,4,4,4,4,8,4, //???????,??????! O1 d" B' \( Q1 L4 f, Z4 Q
  23.         4,4,4,4,4,4,4,4,4,4,4,4,8,4, //?????????,??????
    4 s) Z: ^. H0 A  k, ^' X
  24. };5 j6 h: B8 J2 t
  25. void Sound(u16 frq)
    0 o5 d/ h' L2 a' J) J
  26. {   & t& h1 \/ L; ~; T" k% ]# K
  27.     u32 n;
    8 t- [- l" D& h) v4 ]
  28.     BEEP = 0;( x- L' \* O: o9 L( p
  29.     if(frq != 1000) / X2 ?$ H' H8 l1 \% k' f
  30.     {
    1 x  J9 _  o( C8 b4 H: ]
  31.         n = 500000/((u32)frq);, \* W( i( B- e. O
  32.         BEEP = 0;6 }5 B% {$ T; b
  33.         delay_us(n);8 c$ a/ R  U4 t7 F
  34.         BEEP = 1;
    8 X* h. {# `! B& V& W
  35.         delay_us(n);$ M) x+ |* A( z5 m# |6 K1 A
  36.     }
    % l9 G) [: E3 X0 F0 V& |
  37.     else. e& k; i6 W& P; {" \
  38.     {
    0 z  Q" k# ~- v( j1 o! \. W3 p- ?9 m
  39.             delay_us(1000);
    ; R- o. d& q' e9 l+ P
  40.     }         
    # o3 i2 a- _" w
  41. }
    + |  ]2 a- L3 `, r  p/ Y
  42. void play(void)
    7 O/ d5 b: K3 Q0 B
  43. {4 q+ w0 Z: o+ j0 e" u2 ?
  44.          uc16 tone[] = {247,262,294,330,349,392,440,494,523,587,659,698,784,1000};//?????
    ' |$ F8 A) Y% c* U
  45. u8 music[]={      
    : c/ i: Q0 e: j  I6 u
  46.         5,5,6,8,7,6,5,6,13,13,//??) s2 S  A8 `9 \# p$ J
  47.         5,5,6,8,7,6,5,3,13,13,
    1 r9 x* h1 b) |3 D
  48.         2,2,3,5,3,5,6,3,2,1,
    ! a, J9 ~3 {0 k/ f6 a) w
  49.         6,6,5,6,5,3,6,5,13,13,% ^" G  j: W% L: c
  50.         5,5,6,8,7,6,5,6,13,13,
    / G7 n4 T$ u; b3 M5 J# R1 d7 V
  51.         5,5,6,8,7,6,5,3,13,13,
    & o7 J% F. t; _. G& y2 G
  52.         2,2,3,5,3,5,6,3,2,1,' W  a7 L, D: K# q: }4 M, i% U1 _
  53.         6,6,5,6,5,3,6,1,     T3 @/ ^1 z( g& O' j/ m
  54.         13,8,9,10,10,9,8,10,9,8,6,, L$ J3 _) Z% ^5 u6 D
  55.         13,6,8,9,9,8,6,9,8,6,5,8 \4 ]# b; W" u  \" }6 D" H5 ]0 |
  56.         13,2,3,5,5,3,5,5,6,8,7,6,
    9 r4 F1 C& o( v- v; }
  57.         6,10,9,9,8,6,5,6,82 U  l) y# Q: T
  58. };     
    / Q* q0 [/ r0 K  }& ^) B
  59. u8 time[] = {       + C% k% A4 [: \# e7 Z
  60.         2,4,2,2,2,2,2,8,4, 4, //??. Y( g9 J; n$ f* x: _4 l; R: R
  61.         2,4,2,2,2,2,2,8,4, 4,' x  J, i/ {: v: ]% r# f$ s
  62.         2,4,2,4,2,2,4,2,2,8,- {4 f- b& g" {5 j' h8 z
  63.         2,4,2,2,2,2,2,8,4 ,4,( [! l0 `$ H4 q3 J; {
  64.         2,4,2,2,2,2,2,8,4, 4,
    7 I- x- \1 u6 D% E7 q) ~
  65.         2,4,2,2,2,2,2,8,4, 4,: D4 _( `! C. k8 E8 F& n8 J
  66.         2,4,2,4,2,2,4,2,2,8,
    4 C" Q: T+ V7 Z7 h8 W
  67.         2,4,2,2,2,2,2,8,1 }* W$ ~7 ~4 m' x# Q5 t% g
  68.         4, 2,2,2, 4, 2,2,2, 2,2,8,
    # S  x+ o8 o! O; D: K5 i$ \4 S
  69.         4, 2,2,2,4,2,2,2,2,2,8,
    ( O* K6 A& {9 U' C1 N  R; L
  70.         4, 2,2,2,4,2,2,5,2,6,2,4,
    ; i. N4 b; R6 X' U* O
  71.         2,2 ,2,4,2,4,2,2,12
    + F5 z8 ?/ ^% v& n
  72. };     * D  D: n( `4 V" E3 o$ J& }
  73.     u32 yanshi;
    4 a. H- n; @" V) D- v! O4 [
  74.     u16 i,e;( ]3 m6 \  p$ ~+ N6 f0 ^
  75.     yanshi = 10;( _, ^4 c- B- {& E& V' E: S
  76.     for(i=0;i<sizeof(music)/sizeof(music[0]);i++)# A1 t& I% V( f9 u/ h* {* D6 t
  77.     {/ J. R7 S% L& U# H+ ^+ I) E5 N
  78.          for(e=0;e<((u16)time<i>)*tone[music<i>]/yanshi;e++)+ W+ n. @8 @& ?. S5 v  B
  79.          {4 o3 K' H# Q- n" `  g; p2 w
  80.                  Sound((u32)tone[music<i>]);
    5 k6 A1 T$ g" k7 x0 U
  81.          }      
      J: [! C8 N9 `
  82.     }
    - z: N4 p. J# v
  83. }
    7 c9 S* R+ s8 a% N) g* W  [
  84. int main(void)7 v% f3 V5 [$ f$ e: B
  85. {. b* s8 d" V7 Q/ _6 K
  86.         delay_init();                     
    8 v& b, X+ @2 G
  87.         LED_Init();                          - E0 G3 {* f2 |. K
  88.         BEEP_Init();                 , h. i& B) A5 o$ z8 T' T
  89.         BEEP = 0;. y* y( f9 {! ~, U+ K& I$ _
  90.         play();+ b! o8 w% ^! X
  91.     while(1);                        $ n  A+ h6 e: ]% @( X/ @* j
  92. }</i></i></i>
复制代码

; C' T* L2 [8 q- V: Y" R% \beep.c
6 e0 d7 X; f( Y& X  z8 B7 S. f8 n. C; o' b+ Y  x. i, B
  1. #include "beep.h"2 v4 S! I) f" N& x" w, ]" ?! e4 D
  2. void BEEP_Init(void)9 R4 \, i7 u- `" C+ L
  3. {3 ~# |3 A9 m( Q5 D! X( u3 J$ c1 h
  4.         GPIO_InitTypeDef  GPIO_InitStructure;5 ?7 W  f2 x2 u4 }) f+ P$ A
  5.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);        
    ! A+ Z$ O0 r) e! I* A
  6.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                                 
      W, O* o# `- Q% [) e
  7.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                 
    / N, c  U1 d3 Z$ d) V' X+ _2 {' _
  8.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         
    3 a7 m# u+ |- H
  9.         GPIO_Init(GPIOB, &GPIO_InitStructure);         ; d8 F( P1 \" R0 |8 e( p8 d: o
  10.         GPIO_ResetBits(GPIOB,GPIO_Pin_8);
    5 q8 \$ _! z  J; l  a% `
  11. }
复制代码
* D2 w4 Y5 T2 U
beep.h* a9 J8 y& t1 [% m2 Y
% \1 c1 Z! @; M3 R% d
  1. #ifndef __BEEP_H4 G6 `& l7 ?9 C* `, P, H
  2. #define __BEEP_H         
    " |5 m! }- L6 x
  3. #include "sys.h". A  @. S7 l: Q* k9 |  P1 R6 d
  4. #define BEEP PBout(8)* z* J; h1 Z% R% m
  5. void BEEP_Init(void);                           
    & L6 n. r. b5 Q6 X
  6. #endif
复制代码
/ ?. E# ?5 T' Z8 c: T2 t

+ P# _* M7 q0 F4 L/ R" ^: M& q4 g
赞 收藏 评论0 发布时间:2022-5-26 21:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版