
这项测试是一个所有到手的开发板的必做,本实例也不例外。 首先打开main.h文档,可以看到在STM32CubeMX中定义的命名引脚,本节仅列出LEDx的定义,见下列表: #define LED3_Pin GPIO_PIN_15 #define LED3_GPIO_Port GPIOA #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 PC_10~12,和PA_15,4个LED的IO口。 打开gpio.c可以看到定义的LED0~LED3的语句,当然,此文档所有定义的引脚都有: //Configure GPIO pin : PtPin GPIO_InitStruct.Pin = LED3_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(LED3_GPIO_Port, &GPIO_InitStruct); //Configure GPIO pins : PCPin PCPin PCPin 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的设置定义代码已好了,下边需要在主函数中定义驱显,本例计划轮显的方式。 在开头定义一个整形变量: int ledk=0; 定义一个轮显函数,用switch case函数,代码如下: //TEST LEDs 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); HAL_GPIO_WritePin(GPIOC,LED2_Pin,GPIO_PIN_SET); ledk++;break; case 1: 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); ledk++;break; 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); 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); 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); ledk=0;break; } } 在主函数体内加上: ledTest(); HAL_Delay(100); 编译下载就可以了,见GIF动画图片22_1。 |
22_1
![]() |