问题:
- 我试图使板上的三个LED闪烁,但LED不闪烁
我所做的:
- 使用CubeMX我已经使用默认引脚配置了板。
PB0 = LD1, PB7 = LD2, PB14 = LD3
- 我已将这些行添加到
main.c
以使LED闪烁。请注意,由于预期的硬故障,我已经注释掉了以太网初始化,因为我没有配置以太网和内存
MX_GPIO_Init();
//MX_ETH_Init();
MX_SPI1_Init();
MX_USART3_UART_Init();
MX_USB_OTG_FS_PCD_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_TogglePin(GPIOB, 0);
HAL_GPIO_TogglePin(GPIOB, 7);
HAL_GPIO_TogglePin(GPIOB, 14);
HAL_Delay(1000);
}
观察结果:
有了以上几行代码,只有LD3会闪烁。如果我尝试只闪烁LD3并注释掉其他两个闪烁命令,则LD3不再闪烁
如果我将三个LED的启动条件设置为高(在gpio.c或CubeMX中(,那么三个LED都会亮起,但此后不会闪烁。
有人知道这里发生了什么吗?
非常尴尬的是,这就是问题所在。API HAL_GPIO_TogglePin((需要非常具体的参数。
以下示例不起作用:
HAL_GPIO_TogglePin(A,12);
HAL_GPIO_TogglePin(GPIOA,12);
HAL_GPIO_TogglePin(A,GPIO_Pin_12);
请确保使用正确的句柄和参数:
HAL_GPIO_TogglePin(GPIOA,GPIO_Pin_12);