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

基于STM32F1的开源小项目

[复制链接]
STMCU小助手 发布时间:2022-8-20 16:00
一. 简介
) q" ~: I2 ^0 t* u7 R3 f在前面几篇文章中,将这个项目的各个部分都做了简单的介绍,今天在这里作为一个完整版分享给大家使用。喜欢的话,可以自行获取。  L4 T2 P" G! r6 @0 ^: N2 n# o

9 D7 O3 w; I: u* e6 P: S8 W8 l演示视频
3 H0 \: b- ]# k2 s9 b* A" o6 @观看过演示视频的话,这是一个很好的课设,或者作为初学者入门实践一个首选。
3 K% o8 a& C' x+ u2 m9 Z- v7 P- T7 V6 u  N' Y9 U( G
& w9 V# X+ ]+ E2 @; O) D
二. 项目框架介绍% }# P8 u/ M) T; h4 T; V- _* j
本项目没有使用RTOS操作系统,是一个裸机程序,使用的是一个前后台的框架。中断回调函数用来查询各个状态是否发生并做好标记,然后在main函数中进行相应的处理。
0 B2 o6 j7 j" ?2 r0 m" o% n3 ^; w* \- @
在进入到main函数之后,是对各个硬件部分进行初始化,并进行开机动画的加载,这也是一个标准的流程。5 B( n  Q( T) k9 T

; G. p- F) U! E- N( l& P% F$ I; h, H
  1. uart_init(115200);
    8 G( D/ l) i+ X3 v8 ~- |( z
  2. delay_init();- q0 F6 e% h" @0 j8 ^" s" Z% X
  3. LCD_Init();% w4 X0 X) t8 c  q3 U3 h
  4. TIM4Init();            //延时
    3 L: N1 N1 H$ g! Z3 r
  5. InfraredInit();
    # \  o% e' J# l5 x: e+ P! Y
  6. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    4 M! Y9 @& F  @
  7. LCDDMAFullOn(BackGround);
    # B' J) O4 N( B4 {0 K
  8. Boot_Animation();  //开机动画7 F* f. s/ s- Z# Q7 x) ~; M; A
  9. LCDDMAFullOn(BackGround);
复制代码

, N, I- Q' k7 ]6 S* K! v. t+ k5 n9 v然后就是根据当前的模式进入到不同的if语句中执行相应的函数,默认为主界面,在里面是一个while循环语句。通过按键的值执行相应的操作,在每一次操作完后,要将按键的状态复位。SelectUp和SelectDown分别为光标的上下移动,切换状态的时候,利用break即可跳出。: z* F" ~/ ^3 u3 M+ v9 p
其他的每一个状态的实现过程都是这样的写法,非常方便扩展。1 C$ ~7 m8 O  ?/ u/ N, E( k% d

6 ~4 U4 z+ h- t; K, f4 v
  1. if(CurrMode == Main)  //主界面
    # T  U! i' \! `. J' }
  2. {        
    ( u: j- ~& C$ a+ n
  3.         LCDDMAFullOn(BackGround);
    1 \/ s2 g- s5 f
  4.         MainInterface();
    ; o! P  p1 l7 Z) ?4 t/ ]" \9 W. F
  5.         while(1)
    " S. {5 P5 p5 W) u& L) r' O7 a
  6.         {$ V( ~/ {1 |  a: c
  7.                 if(KEYState == KEYLEFT)
      s' I5 w, B4 Y' O# ^* F+ z
  8.                 {, r4 w0 F  W8 X) e5 x
  9.                         SelectUp();# u! G) ]+ d# e% @' Y9 C
  10.                         KEYState = KEYNONE;  p$ v/ O) A2 z* O, q% X$ s# {
  11.                 }; z- w- R* d9 W/ \
  12.                 else if(KEYState == KEYRIGHT): I/ S" q* S6 k0 H5 w( B1 q/ t
  13.                 {
    0 V0 B% h! n- i( V
  14.                         SelectDown();        ) \; H+ w* V& S3 G9 o( X( {9 ~. A
  15.                         KEYState = KEYNONE;& [. U5 Q. m6 \3 }5 F2 Y# y8 K
  16.                 }
    / w( A2 F9 H* r9 e3 P
  17.                 else if(KEYState == KEYUP)( o* P$ R; _1 G. j* [' b
  18.                 {# @8 T9 {) |# Q" y1 |- ?9 V+ J
  19.                         CurrMode = (enum State)(CurrIndex + 1);- y; a" y1 l4 P& e5 n
  20.                         if(CurrMode == 3)4 z2 v+ G) m6 Q/ K6 n& f
  21.                                 CurrMode = Photo;
    ' G5 T8 _& e$ n& L! }
  22.                         KEYState = KEYNONE;
    ) h# X" h; j8 _1 x, \+ {! B
  23.                         break;
    4 Z" K" u; T# a/ w" l
  24.                 }3 s3 O) r  L* ~' y* ^2 r
  25.         }
    ; V! j7 F, E0 L- d
  26. }
复制代码
2 h7 G9 k) o5 Y' c2 o9 P
, m$ v! k" F$ x- X0 V) j
' Y8 A& Y; G+ x/ H& o

8 U3 N, ^+ g" c( D# N: R
赞 收藏 评论0 发布时间:2022-8-20 16:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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