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

基于STM32F1的开源小项目

[复制链接]
STMCU小助手 发布时间:2022-8-20 16:00
一. 简介
4 s1 H4 o& ]; x7 w( W2 t在前面几篇文章中,将这个项目的各个部分都做了简单的介绍,今天在这里作为一个完整版分享给大家使用。喜欢的话,可以自行获取。4 e4 E; J. w0 s

6 B, F  u. W' v. ~- V* O演示视频% @8 D/ O: o7 |9 q3 c) |6 i
观看过演示视频的话,这是一个很好的课设,或者作为初学者入门实践一个首选。
4 m/ ~3 {; H1 T* r3 v
2 d, O8 o* ?$ K6 F4 v* x1 P! J! h8 A
二. 项目框架介绍
4 r# z/ D: @( L/ L' L- F本项目没有使用RTOS操作系统,是一个裸机程序,使用的是一个前后台的框架。中断回调函数用来查询各个状态是否发生并做好标记,然后在main函数中进行相应的处理。2 B+ U; k) c7 v
$ a- @# C2 l* r: X+ {( l* @# ~
在进入到main函数之后,是对各个硬件部分进行初始化,并进行开机动画的加载,这也是一个标准的流程。* g5 [3 b& m; F' f

% L0 v, V) `8 P! C$ A; F  X; Q
  1. uart_init(115200);% r& v' G2 B/ M( t6 }% o  p
  2. delay_init();
    / c: K  l8 U- b9 D/ }
  3. LCD_Init();
    ' h& o+ P! s1 W3 q4 X. e
  4. TIM4Init();            //延时
    4 e% |* N' _  r1 y
  5. InfraredInit();$ O: w5 |: H4 |5 ]6 I
  6. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/ `' h) y# K3 L
  7. LCDDMAFullOn(BackGround);: z. d; m1 V7 `; y* |( @/ ]) L
  8. Boot_Animation();  //开机动画0 K9 O& B* K+ s  m8 L, Y$ A6 R
  9. LCDDMAFullOn(BackGround);
复制代码
8 `3 l. B: L  C+ j0 J
然后就是根据当前的模式进入到不同的if语句中执行相应的函数,默认为主界面,在里面是一个while循环语句。通过按键的值执行相应的操作,在每一次操作完后,要将按键的状态复位。SelectUp和SelectDown分别为光标的上下移动,切换状态的时候,利用break即可跳出。
, t  @* Y) W- l) D# b+ u其他的每一个状态的实现过程都是这样的写法,非常方便扩展。% M  K& b, \  ?- q% g- _
9 [0 _  t% }, l) u) w
  1. if(CurrMode == Main)  //主界面
    3 L  U. Y$ }3 |
  2. {        
    - I8 X6 k2 L2 X6 B' b
  3.         LCDDMAFullOn(BackGround);: U% A, S3 F/ f+ i+ `% f3 M$ z; T! e. _
  4.         MainInterface();: X+ B8 z" g5 f& m8 v( c
  5.         while(1)
    0 S: u; r; |  G0 @* v, ?1 P; h/ A
  6.         {
    " n. L- a4 g. N9 Q2 m* v
  7.                 if(KEYState == KEYLEFT)3 Q; d, `; t. e. r4 q
  8.                 {
    ! l) P% ^  Z: Q6 S& w- g4 H0 @
  9.                         SelectUp();
      @/ h* U! z0 j
  10.                         KEYState = KEYNONE;
    / T' d# A1 c/ {& D1 ?' }5 P! M
  11.                 }8 o" A7 N' L  L9 \9 g
  12.                 else if(KEYState == KEYRIGHT)
      Y4 S" Y; ^" T4 T+ M3 U" \6 V
  13.                 {+ m$ c7 }' x6 \
  14.                         SelectDown();        3 w& b+ g( o# _
  15.                         KEYState = KEYNONE;. g' A7 H/ q0 X' I3 b  P9 s
  16.                 }/ E9 ~+ P' u3 w2 E5 M8 T/ o
  17.                 else if(KEYState == KEYUP)
      N" ]1 S, _% c' _! V+ ~) k
  18.                 {1 m6 J3 Z! ~% P5 W- h- P2 @
  19.                         CurrMode = (enum State)(CurrIndex + 1);# c( B" j+ n& Y
  20.                         if(CurrMode == 3)' y; d" }! v" J; Q
  21.                                 CurrMode = Photo;
    / g: Q. K. V. Y8 E# ^
  22.                         KEYState = KEYNONE;, x# j9 i3 ~0 r  @
  23.                         break;) p2 B4 U, q% S) }* G
  24.                 }) X  R: M) X: k6 f4 Q0 |& S
  25.         }# B- m$ f  b" Q0 |! |
  26. }
复制代码
+ w8 m6 ~. h& H2 t
2 I4 ?3 y, J, c. {# M) c5 O& ]+ H5 B
- J, m5 A7 u8 Z. D

% S; ~* `  t9 ?1 _
收藏 评论0 发布时间:2022-8-20 16:00

举报

0个回答

所属标签

相似分享

官网相关资源

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