【问题标题】:STM32F4 (Nucleo-F446RE CooCOX) basic GPIOSTM32F4 (Nucleo-F446RE CooCOX) 基本 GPIO
【发布时间】:2017-07-07 14:35:05
【问题描述】:

我刚刚开始编写 Nucleo-F446RE(基于 STM32F446RE MCU)。

我似乎无法激活引脚,我正在尝试使用以下代码切换 GPIO:

//*****************************************************************************
#include "stm32f446xx.h"
#include "stm32f4xx_hal.h"
//! \file main.c
//! \brief main application
//! \version 1.0.0.0
//! \date $Creat_time$
//! \author $Creat_author$
//! \copy
//!
//! Copyright (c) 2014 CooCox.  All rights reserved.
//
//! \addtogroup project
//! @{
//! \addtogroup main
//! @{
//*****************************************************************************

int main(void)

__HAL_RCC_GPIOA_CLK_ENABLE();
     GPIO_InitTypeDef GPIO_InitTypeDefStruct;

     GPIO_InitTypeDefStruct.Pin = GPIO_PIN_1;
     GPIO_InitTypeDefStruct.Speed = GPIO_SPEED_LOW;
     GPIO_InitTypeDefStruct.Pull = GPIO_PULLUP;
     GPIO_InitTypeDefStruct.Mode = GPIO_MODE_OUTPUT_PP;

    HAL_GPIO_Init(GPIOA, &GPIO_InitTypeDefStruct);


    while(1)

    {
        HAL_GPIO_TogglePin(&GPIO_InitTypeDefStruct,GPIO_PIN_1);


    }

虽然它似乎不起作用..我已经浏览了 GPIO 的头文件和 c 文件,其中解释了如何设置引脚,尽管即使遵循这一点,它也只是保持低电平。我哪里错了?

提前感谢您的帮助

【问题讨论】:

  • 你需要在切换之间有一个延迟,这比眼睛看到的要快得多,甚至可能太快导致“发光”。在那里延迟一整秒或很大一部分......
  • 如果您想查看您的初始化代码是否有效,请退出 while 循环,不要假设将引脚设置为高电平会打开 LED,这取决于电路板设计。用一个开关尝试一次,如果 LED 没有亮起并保持在运行,则尝试使用两个开关运行,如果它仍然没有亮起并保持亮起,那么您的 init 无法正常工作,如果可以,则需要延迟
  • @old_timer 我刚刚将它连接到示波器并尝试了一段时间,没有时间和一个和两个切换。它根本不输出任何东西

标签: arm stm32f4


【解决方案1】:


HAL_GPIO_TogglePin(&GPIO_InitTypeDefStruct,GPIO_PIN_1);

应该是

HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2018-01-16
    • 2019-11-18
    • 2022-08-11
    • 2017-09-01
    • 2016-03-03
    相关资源
    最近更新 更多