我在微控制器STM32F373发现中点亮LED的问题

I have a problem lighting an LED in a microcontroller stm32f373 discovery

本文关键字:LED 问题 发现 控制器 STM32F373      更新时间:2023-10-16

我在微控制器设备发现STM32F373

中遇到了一个问题。

我使用了STM32 Cube MX,并且该程序执行了HAL库,但LED没有点亮。根据STM指令进行工作。第4课。HAL图书馆。STM32立方体MX。LED和按钮链接俄语

  1. 设置电源,输入和输出的引脚发现
  2. 打开RCC-> HSE总线
  3. 在时钟配置中,启用了HSE。由操作配置如下时钟
  4. 添加了一个无尽的循环。
  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);
}
  1. 我做的一切正确吗?
  2. 解释LED可能不会发亮的原因。
  3. 微控制器的引脚具有自己的标识符。我在哪里可以找到腿部信息?这个合适的发现设备描述吗?
  4. 我使用了本课程作者提供的英语文档,仅是我的控制器的版本。STM32F3 HAL和低层驱动器STM32F373XX的描述

LED PIN 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连接到LED连接到的GPIO外围设备。

RCC->AHBENR中,有位点可以打开和关闭单个GPIO端口时钟,GPIOD位于位20,因此RCC->AHBENR |= (1 << 20);会这样做。将根据您使用的库定义现有的定义,因此请使用这些库代替(1 << 20)魔术号码。

编辑编辑后,您在底部添加了LED是PINS PC8&amp;PC9,您的代码正在切换PD8和PD9。检查应该是哪种方式。

您是否将GPIO配置为STM32Cubemx中的输出?

启用了中断?如果没有,您会注意到在调试时,hal_delay永远不会返回。尝试放置几个断点,看看您的时环是否实际执行。