繁体   English   中英

我在微控制器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 CUBE 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引脚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。 检查应该采用哪种方式。

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

是否启用了中断? 如果没有,您将在调试时注意到HAL_Delay从不返回。 尝试放置几个断点,看看您的while循环是否真正执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM