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

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管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版