【发布时间】: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 我刚刚将它连接到示波器并尝试了一段时间,没有时间和一个和两个切换。它根本不输出任何东西