|
这项测试是一个所有到手的开发板的必做,本实例也不例外。" x1 T! `* r9 Q+ B0 R$ X 首先打开main.h文档,可以看到在STM32CubeMX中定义的命名引脚,本节仅列出LEDx的定义,见下列表:# P6 s8 o. S/ i #define LED3_Pin GPIO_PIN_15 #define LED3_GPIO_Port GPIOA$ |1 J: t" h w$ e/ m4 j P& ? #define LED0_Pin GPIO_PIN_10 #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+ I9 E/ E) z# J, i m$ i PC_10~12,和PA_15,4个LED的IO口。 打开gpio.c可以看到定义的LED0~LED3的语句,当然,此文档所有定义的引脚都有:% y+ r, H5 n, O9 x" _ j3 V //Configure GPIO pin : PtPin GPIO_InitStruct.Pin = LED3_Pin;; k+ p/ ]9 a' I4 y* C: _0 w GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;' Q7 ~( |% r, B* h4 x HAL_GPIO_Init(LED3_GPIO_Port, &GPIO_InitStruct);4 G% e l1 I ?1 w( l //Configure GPIO pins : PCPin PCPin PCPin GPIO_InitStruct.Pin = LED0_Pin|LED1_Pin|LED2_Pin;9 E$ n9 D2 h/ b5 Z Q7 h8 p GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 驱显LED的设置定义代码已好了,下边需要在主函数中定义驱显,本例计划轮显的方式。 在开头定义一个整形变量: int ledk=0;+ W" E6 b+ p5 w9 o( R1 S 定义一个轮显函数,用switch case函数,代码如下:7 D) ]2 Z6 u3 R" z3 t4 j8 G" a. b //TEST LEDs* ^9 i' E6 V" U8 C! [ void ledTest(void){ switch(ledk){ 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);% ^3 ^7 t0 @% }1 v1 } HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET); ledk++;break; case 1:9 t, f5 r6 Q2 ~& t" B7 n( h& r5 ]/ g HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET);/ w* k* ^. p2 } @; L; k: U) w HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_RESET);; y2 q5 w* N+ f, h8 |# Q HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET);8 I" ~3 Q! L8 ]* [% |2 s ledk++;break; case 2: HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET);7 m K! [# ^+ Z4 {1 _ HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET);# p4 r4 [. K! i5 b HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_RESET);( m& u* g! b: p# H7 l HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET); ledk++;break;$ S1 M& _# R' Q4 U9 ~ case 3:) y1 i9 e9 ]7 ^) G! T 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_RESET); ledk++;break; default: HAL_GPIO_WritePin(GPIOA,LED3_Pin,GPIO_PIN_SET);+ A" u0 h7 n' V# x HAL_GPIO_WritePin(GPIOC,LED0_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET);1 k) ` W* w2 a0 _- A* f2 o HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET);7 G! d3 k7 l5 C( G- \ ledk=0;break; } } 在主函数体内加上:& G' O2 P7 m4 P ledTest();: U5 [; `, Z) b/ k HAL_Delay(100);$ r' ~# q5 w! G; X- {4 R 编译下载就可以了,见GIF动画图片22_1。 |
22_1
|
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版