这项测试是一个所有到手的开发板的必做,本实例也不例外。5 c6 s; U6 Q) x( z* A% s/ m 首先打开main.h文档,可以看到在STM32CubeMX中定义的命名引脚,本节仅列出LEDx的定义,见下列表:9 }3 e1 O6 C3 d d #define LED3_Pin GPIO_PIN_15 #define LED3_GPIO_Port GPIOA #define LED0_Pin GPIO_PIN_103 f4 l( K. Q( ^) ~( `- W #define LED0_GPIO_Port GPIOC #define LED1_Pin GPIO_PIN_11 #define LED1_GPIO_Port GPIOC #define LED2_Pin GPIO_PIN_12 #define LED2_GPIO_Port GPIOC PC_10~12,和PA_15,4个LED的IO口。 打开gpio.c可以看到定义的LED0~LED3的语句,当然,此文档所有定义的引脚都有: //Configure GPIO pin : PtPin GPIO_InitStruct.Pin = LED3_Pin;1 |- m. j/ ]/ {% d J/ Y- f) g GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;' q$ J' F( t: B' B3 l- f0 w( d GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;! p. R0 L3 t/ L( Y+ e3 T HAL_GPIO_Init(LED3_GPIO_Port, &GPIO_InitStruct); //Configure GPIO pins : PCPin PCPin PCPin- e( f7 {* U |: E/ ~2 D% ?- c GPIO_InitStruct.Pin = LED0_Pin|LED1_Pin|LED2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 驱显LED的设置定义代码已好了,下边需要在主函数中定义驱显,本例计划轮显的方式。 在开头定义一个整形变量:' J4 C: V( t$ P2 K S" j1 x% Y int ledk=0; 定义一个轮显函数,用switch case函数,代码如下: //TEST LEDs void ledTest(void){& _( C4 D; y% p# q6 d7 K8 n5 @ switch(ledk){: A" k1 R; P: ~; u8 f9 V& V5 o/ o case 0: G3 m8 e; X" e4 k+ |4 R 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);3 w" K8 o! D: j7 p' ~ HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET); ledk++;break;6 J/ h: d1 z, v7 L! z7 _ case 1:( A, _6 q5 m& W2 i6 O, } 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); HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET);2 d" T" M2 R# ]# S& o$ O3 X ledk++;break;5 r+ }. d2 m. _5 P4 ? n case 2: 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_RESET); HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET); ledk++;break; case 3: HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET);2 {; C7 V) N/ k" `' I$ c, p HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET);3 U' y, D, S' t+ N! p \% G HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET);' e. A+ U% Q6 R' ]! D7 U HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_RESET);. v: w' X4 O% g1 I; u" e# P ledk++;break;5 ^( P C4 h7 C4 C3 l) b8 F default:: t' ]- G$ K4 c" _ HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET);6 H5 l: X3 B- s# T. J: Q HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET); ledk=0;break;& \* r$ w7 w1 ?# F* M }; }( h0 F: F5 m+ ~ } f U; b- G% Y! B5 H: | 在主函数体内加上:/ b% A0 a! I4 E$ ]1 X X, f ledTest(); HAL_Delay(100);' V: w) S N) O" R4 z1 P 编译下载就可以了,见GIF动画图片22_1。 |
22_1
小马哥STM32F103开源小四轴RoboFly全部资料大放送
STM32固件库分享,超全系列整理
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32F107VCT6官方原理图和PCB
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
基于STM32F10xx存储器和系统架构经验分享
基于STM32F1的CAN通信之BH1750
基于STM32F1的CAN通信之OLED
基于STM32F1的CAN通信之之串口IAP