我在微控制器 stm32f373 发现中点亮 LED 时遇到问题
I have a problem lighting an LED in a microcontroller stm32f373 discovery
我在微控制器设备发现 stm32f373 中点亮 LED 时遇到问题
我用了STM32 cube mx和HAL库程序执行了,但是LED不亮。根据STM指令执行工作。第 4 课 HAL 库。 STM32 立方体 MX。 LED 和按钮 link russian
- 设置电源、输入和输出引脚
discovery
- 开启rcc->HSE总线
- 在时钟配置中,启用 HSE。配置操作如下
clock
- 添加了无限循环更改它。
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(5000); //1 minut
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_8);
HAL_Delay(5000);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_8);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_9);
HAL_Delay(5000);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_9);
}
- 我做对了吗?
- 请说明LED不亮的原因。
- 微控制器的引脚有自己的标识符。我在哪里可以找到腿部信息?这适合 Discovery Device Description 吗?
- 我使用的是课程作者提供的英文文档,只有我的控制器版本。 Description of STM32F3 HAL and low-layer drivers STM32F373xx
LED 引脚 PC9、PC8
您需要 HAL_Delay
第二次延迟。否则,您切换 LED,跳转到 while
的开头并再次切换 LED。因此,根据 I/O.
的初始状态,LED 可能仅打开几个时钟周期
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_8);
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_8);
}
在将引脚设置为输出并尝试切换它们之前,您需要为 LED 所连接的 GPIO 外设启用时钟。
在 RCC->AHBENR
中有一些位可以打开和关闭各个 GPIO 端口时钟,GPIOD 是第 20 位,所以 RCC->AHBENR |= (1 << 20);
可以。将根据您使用的库定义现有的定义,因此请使用这些定义而不是 (1 << 20)
幻数。
编辑
编辑后,您在底部添加了 LED 是引脚 PC8 和 PC9,您的代码正在切换 PD8 和 PD9。检查它应该是哪种方式。
您在STM32CubeMX中是否将GPIO配置为输出?
是否允许中断?如果不是,您会在调试时注意到 HAL_Delay 永远不会 returns。尝试放置几个断点并查看您的 while 循环是否实际执行。
我在微控制器设备发现 stm32f373 中点亮 LED 时遇到问题
我用了STM32 cube mx和HAL库程序执行了,但是LED不亮。根据STM指令执行工作。第 4 课 HAL 库。 STM32 立方体 MX。 LED 和按钮 link russian
- 设置电源、输入和输出引脚 discovery
- 开启rcc->HSE总线
- 在时钟配置中,启用 HSE。配置操作如下 clock
- 添加了无限循环更改它。
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(5000); //1 minut
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_8);
HAL_Delay(5000);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_8);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_9);
HAL_Delay(5000);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_9);
}
- 我做对了吗?
- 请说明LED不亮的原因。
- 微控制器的引脚有自己的标识符。我在哪里可以找到腿部信息?这适合 Discovery Device Description 吗?
- 我使用的是课程作者提供的英文文档,只有我的控制器版本。 Description of STM32F3 HAL and low-layer drivers STM32F373xx
LED 引脚 PC9、PC8
您需要 HAL_Delay
第二次延迟。否则,您切换 LED,跳转到 while
的开头并再次切换 LED。因此,根据 I/O.
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_8);
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_8);
}
在将引脚设置为输出并尝试切换它们之前,您需要为 LED 所连接的 GPIO 外设启用时钟。
在 RCC->AHBENR
中有一些位可以打开和关闭各个 GPIO 端口时钟,GPIOD 是第 20 位,所以 RCC->AHBENR |= (1 << 20);
可以。将根据您使用的库定义现有的定义,因此请使用这些定义而不是 (1 << 20)
幻数。
编辑 编辑后,您在底部添加了 LED 是引脚 PC8 和 PC9,您的代码正在切换 PD8 和 PD9。检查它应该是哪种方式。
您在STM32CubeMX中是否将GPIO配置为输出?
是否允许中断?如果不是,您会在调试时注意到 HAL_Delay 永远不会 returns。尝试放置几个断点并查看您的 while 循环是否实际执行。