
这项测试是一个所有到手的开发板的必做,本实例也不例外。 首先打开main.h文档,可以看到在STM32CubeMX中定义的命名引脚,本节仅列出LEDx的定义,见下列表: #define LED3_Pin GPIO_PIN_15) S+ J a1 H" q3 |# U& f5 o #define LED3_GPIO_Port GPIOA #define LED0_Pin GPIO_PIN_10 #define LED0_GPIO_Port GPIOC" x& O7 X. C' ~+ Y3 a- D* l8 r #define LED1_Pin GPIO_PIN_11 #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 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; HAL_GPIO_Init(LED3_GPIO_Port, &GPIO_InitStruct);) M9 _' |* s3 j2 r1 ]; c! c" `1 P //Configure GPIO pins : PCPin PCPin PCPin GPIO_InitStruct.Pin = LED0_Pin|LED1_Pin|LED2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;* S* D% o% _8 V5 j. a, H& q GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);: q B( ~6 n( a4 v- C$ O6 ~ 驱显LED的设置定义代码已好了,下边需要在主函数中定义驱显,本例计划轮显的方式。 在开头定义一个整形变量: int ledk=0;% v9 A x* g1 ]: _5 R 定义一个轮显函数,用switch case函数,代码如下: //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: HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET); 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); HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_RESET); 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); 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); HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET); ledk++;break; case 3:: d& b9 U; q" U- C! Q* w2 @ HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET); 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: HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET);) D( c( {& B2 G4 d8 s3 Y ledk=0;break; } }) M u: {4 v" C1 U 在主函数体内加上: 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
![]() |