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

[自设STM32F103VET6测试LCD]3、GPIO测试

[复制链接]
zhjb1 发布时间:2018-12-24 08:09
这项测试是一个所有到手的开发板的必做,本实例也不例外。
  y" X. o& j  t9 U- c5 N首先打开main.h文档,可以看到在STM32CubeMX中定义的命名引脚,本节仅列出LEDx的定义,见下列表:
; Q2 @! P0 ?$ w, z#define LED3_Pin GPIO_PIN_15) S+ J  a1 H" q3 |# U& f5 o
#define LED3_GPIO_Port GPIOA
1 E  ?& t9 Z. S( D0 j#define LED0_Pin GPIO_PIN_10
4 }( `3 P: S! o4 `( m% @3 m+ C1 a6 p#define LED0_GPIO_Port GPIOC" x& O7 X. C' ~+ Y3 a- D* l8 r
#define LED1_Pin GPIO_PIN_11
9 M! K9 V. p: E#define LED1_GPIO_Port GPIOC$ W  H: o. @' j' C* \$ x4 H
#define LED2_Pin GPIO_PIN_12( l& B* @4 h. f, R/ o2 M
#define LED2_GPIO_Port GPIOC8 g4 \. y+ O. [+ z* }
PC_10~12,和PA_15,4个LED的IO口。! |# n% _4 {9 x+ s
打开gpio.c可以看到定义的LED0~LED3的语句,当然,此文档所有定义的引脚都有:3 F+ {- ?; M5 Z; h
//Configure GPIO pin : PtPin
  G0 Q* h  m# {- }- Y5 [  GPIO_InitStruct.Pin = LED3_Pin;- d* r" ?, b9 p
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;# ^& K' z$ B: B9 j% Q
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
! x% p: |. J# ~  HAL_GPIO_Init(LED3_GPIO_Port, &GPIO_InitStruct);) M9 _' |* s3 j2 r1 ]; c! c" `1 P
//Configure GPIO pins : PCPin PCPin PCPin
7 o2 W' E- q4 r# Y& o& K  GPIO_InitStruct.Pin = LED0_Pin|LED1_Pin|LED2_Pin;
" h  \( g+ d6 i2 q0 p& `1 @  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;* S* D% o% _8 V5 j. a, H& q
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
$ u! a$ e3 A9 @- D, [  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);: q  B( ~6 n( a4 v- C$ O6 ~
驱显LED的设置定义代码已好了,下边需要在主函数中定义驱显,本例计划轮显的方式。
9 V4 a1 k0 _$ T2 h/ R: n在开头定义一个整形变量:
9 z6 R- G3 B, I% G+ U8 c6 \) L2 \int ledk=0;% v9 A  x* g1 ]: _5 R
定义一个轮显函数,用switch case函数,代码如下:
# O5 @( V2 v$ F' [4 ?1 }) K' X//TEST LEDs# g1 V- n1 p) H$ _: e
void ledTest(void){: `. e; |; t# a# E
switch(ledk){6 h7 Q# x5 J0 b
  case 0:
/ m" c, {) N8 E9 j6 ]                HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_RESET);
% Z) ~1 q) d4 E, a# u' t                HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET);
; g+ a( Y- H3 }, W; O# B5 ^2 L                HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET);
7 S4 N& ], m0 M6 u- j                HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET);+ J4 E( |% S) b, {" V$ r' n, q8 J
          ledk++;break;! h/ e; M% ^" f" i, c0 t; h, e  P
  case 1:  \9 H# y/ e) F, Z9 E1 ]. G2 K  _
                HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET);
  W7 A# u5 x8 [3 f- Z                HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_RESET);
6 y2 o. ~) E2 p1 Z$ v4 Y" }# s                HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET);5 N$ l4 H* D! J5 |  f/ g% Z5 N
                HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET);
2 |$ v6 e; @, V6 ~- G# z) D% }6 E* i          ledk++;break;+ X- B$ N1 a% C, S
  case 2:! \, b7 U$ x; [4 F6 y
                HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET);6 u0 K: |& Q" r
                HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET);
9 \  |) Q9 l! ]# I; \5 g                HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_RESET);
+ I# L+ ~& f  G. g4 P3 e                HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET);
# P% g6 W( A. C" S          ledk++;break;
, Z0 ^# R& M) A* X" Q8 }  A  case 3:: d& b9 U; q" U- C! Q* w2 @
                HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET);
8 g, W% l7 }+ O% u                HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET);
2 S# F- P% U5 T' g1 ^) R                HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET);4 U- k* H9 p2 K5 G9 o0 b" t& E
                HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_RESET);- `0 e' B" t  Q$ s
          ledk++;break;! r8 N0 \# I; s* U+ W
  default:
' j9 H+ P. [. u+ N0 C                HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET);
: m& i& }- l& f& y, U- F/ x                HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET);
2 I4 q$ |% [* i# b, S                HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET);
3 A& \  B/ ?+ r5 M+ ^                HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET);) D( c( {& B2 G4 d8 s3 Y
          ledk=0;break;
: i% V& N' |7 G! P! {: \4 P/ ^7 p) v2 @ }
% s# `2 g% T: G6 O% G}) M  u: {4 v" C1 U
在主函数体内加上:
$ l5 O; ~0 b. @ledTest();+ b- _7 _6 P' x4 T$ N& V" I
HAL_Delay(100);# B% s1 I+ g, w0 `
编译下载就可以了,见GIF动画图片22_1。, G8 {6 V$ h. C. X' Y1 Q* G
+ x6 C* I. C" O

22_1

22_1
收藏 评论1 发布时间:2018-12-24 08:09

举报

1个回答
zwei99999999 回答时间:2018-12-25 01:47:46

所属标签

相似分享

官网相关资源

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