你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

f4-discoveryLED点不亮,的奇葩原因

[复制链接]
zfz9232 提问时间:2016-10-20 20:52 /
板子:STM32F4-DISCOVERY
LED部分原理图:
函数调用:
============main.c===============
#include "stm32f4xx.h"
#include "bsp_led.h"

int main(void)
{
   
    LED_GPIO_Config();
   
    //GPIO_ResetBits(LED_R_PORT,LED_R_PIN);
    GPIO_SetBits(LED_R_PORT,LED_R_PIN);
   
    while(1)
    {
        
    };
}
============bsp_led.h===============
#ifndef __BSP_LED_H__
#define __BSP_LED_H__

//#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"


#define LED_R_PIN     GPIO_Pin_13
#define LED_R_PORT    GPIOG
#define LED_R_CLK     RCC_AHB1Periph_GPIOG

void LED_GPIO_Config(void);

#endif
=============bsp_led.c==============
#include "bsp_led.h"

void LED_GPIO_Config(void)
{
    GPIO_InitTypeDef* GPIO_Init_Pin;
    //时钟
    RCC_AHB1PeriphClockCmd(LED_R_CLK,ENABLE);
   
    GPIO_Init_Pin->GPIO_Pin = LED_R_PIN;
    GPIO_Init_Pin->GPIO_Mode = GPIO_Mode_OUT;
    GPIO_Init_Pin->GPIO_Speed = GPIO_Fast_Speed;
    GPIO_Init_Pin->GPIO_OType = GPIO_OType_PP;
    GPIO_Init_Pin->GPIO_PuPd = GPIO_PuPd_UP;

    GPIO_Init(LED_R_PORT,GPIO_Init_Pin);   
}


运行keil没编译出错的提示,但是烧到板子就是点不亮PG13对应的LED灯。

该寄存器没法修改

该寄存器没法修改
收藏 1 评论23 发布时间:2016-10-20 20:52

举报

23个回答
zfz9232 最优答案 回答时间:2016-10-21 22:06:19
该问题的出现是因为指针并没有在使用前初始化,必须要  
GPIO_InitTypeDef *GPIO_Init_Pin;
GPIO_InitTypeDef SomeOne;
GPIO_Init_Pin = &SomeOne;
这样子才能用正常使用。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

中山无雪 最优答案 回答时间:2016-10-21 23:37:49
=============bsp_led.c==============
#include "bsp_led.h"

void LED_GPIO_Config(void)
{
    GPIO_InitTypeDef* GPIO_Init_Pin;
    //时钟
    RCC_AHB1PeriphClockCmd(LED_R_CLK,ENABLE);
   
    GPIO_Init_Pin->GPIO_Pin = LED_R_PIN;
    GPIO_Init_Pin->GPIO_Mode = GPIO_Mode_OUT;
    GPIO_Init_Pin->GPIO_Speed = GPIO_Fast_Speed;
    GPIO_Init_Pin->GPIO_OType = GPIO_OType_PP;
    GPIO_Init_Pin->GPIO_PuPd = GPIO_PuPd_UP;

    GPIO_Init(LED_R_PORT,GPIO_Init_Pin);   
}

定义了指针而没有分配对象,当然就不会起作用了
下面 的直接定义实例,系统自动分配空间,所以运行就正确了

这是C语言 的基本要求

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

zfz9232 回答时间:2016-10-20 22:01:08
gpio_mode 这个寄存器没法修改是怎么回事?按照上面的例程,应该会修改才对哇
哪位大神知道原因啊?
anywill 回答时间:2016-10-20 22:03:09
先用万用表响档量一下 u=397720390,2098644530&fm=21&gp=0.jpg
anywill 回答时间:2016-10-20 22:04:28
我直接mbed
DigitalOut myled(LED1);
myled=1;
就亮了

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

ynwscfsfi 回答时间:2016-10-20 22:34:52
手动改也不行吗
高二毛 回答时间:2016-10-21 08:26:06
你的系统时钟起来了嘛?
zfz9232 回答时间:2016-10-21 08:43:40
高二毛 发表于 2016-10-21 08:26
你的系统时钟起来了嘛?

时钟起来了。跟正常能点亮的程序对比过。结果发现这个问题。
zfz9232 回答时间:2016-10-21 08:44:36

没有试过呢。
zfz9232 回答时间:2016-10-21 08:45:25
anywill 发表于 2016-10-20 22:04
我直接mbed
DigitalOut myled(LED1);
myled=1;

刚刚入门,还没接触到这个的介绍。。。
回答时间:2016-10-21 09:22:46
楼主把工程传上来看看
123下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版