OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8976|回复: 11

第一个跑马灯实验为什么我的LED_Init初始函数前要加上extern才能消失警告?

[复制链接]

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2015-8-30
在线时间
24 小时
发表于 2015-9-4 11:25:41 | 显示全部楼层 |阅读模式
5金钱
#include "stm32f10x.h"
#include "delay.h"
#include "LED.h"

int main(void)
{

extern LED_Init();
delay_init();


while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);

GPIO_ResetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);

}


}


今天按照视频学习第一个跑马灯库函数实验,为什么我在编译的时候总是提示main.c(8): warning:  #223-D: function "LED_Init" declared implicitly呢?
而我在LED_init 前面加上extern 以后再编译警告就消失了, 可是我看视频里LED_Init()前面并没有加extern啊?   
求解。。

最佳答案

查看完整内容[请看2#楼]

回复【7楼】就是我: --------------------------------- MDK乱报,此时,可以考虑关闭MDK,重新打开试试。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2015-9-4 11:25:42 | 显示全部楼层
回复【7楼】就是我:
---------------------------------
MDK乱报,此时,可以考虑关闭MDK,重新打开试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2015-9-4 12:08:11 | 显示全部楼层
你这里加extern仅仅是声明其他C文件(猜是LED.c)里的一个函数,而并非调用了这个函数,所以你这里还没有对LED进行初始化呢。

若是这么做,应该这样:

#include "stm32f10x.h"
#include "delay.h"
#include "LED.h"

int main(void)
{

extern LED_Init();//声明函数
LED_Init();//调用函数
delay_init();


while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);

GPIO_ResetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);

}


}

或者这样:

#include "stm32f10x.h"
#include "delay.h"
#include "LED.h"

extern LED_Init();//声明函数

int main(void)
{

LED_Init();//调用函数


while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);

GPIO_ResetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);

}


}

若要像视频那样,应该这样:

在LED.h里面声明这个函数,即添加:

extern LED_Init();//声明函数

在main.c里面就可以这样了:

#include "stm32f10x.h"
#include "delay.h"
#include "LED.h"

int main(void)
{

LED_Init();
delay_init();


while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);

GPIO_ResetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);

}


}
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2015-8-30
在线时间
24 小时
 楼主| 发表于 2015-9-4 12:31:10 | 显示全部楼层


视频截图,
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2015-9-4 13:25:12 | 显示全部楼层
回复【3楼】就是我:
---------------------------------
这个应该就你的而论。视频的截图说明不了什么,除非你的和视频的完全一样。
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2015-9-4 13:27:09 | 显示全部楼层
LED.h led.h 好像有差喔

打錯載入找不到標頭 等於找不到函式 等於無法識別 跟你的錯誤結果相符
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2015-8-30
在线时间
24 小时
 楼主| 发表于 2015-9-4 15:38:00 | 显示全部楼层
回复【5楼】Rocks:
---------------------------------
谢谢,视频里是小写的;   我在打的时候实际文件名是大写的,所以引用的时候也写的大写;
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2015-8-30
在线时间
24 小时
 楼主| 发表于 2015-9-4 15:49:01 | 显示全部楼层


首先谢谢上面各位的关注和指点;
下午我又按照视频重新码了一遍,编译以后没有出现上午所提示的警告出现了;
可是我把下午码的程序和上午的对照了几遍,没有找到什么不同的地方啊,为什么上午就会出现警告呢?
虽然现在程序正常了,但是上午出现警告的原因还没有找到,心里还是没放心啊,以后再出现这样的问题还是不知道为什么。
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2017-5-26
在线时间
3 小时
发表于 2017-5-26 10:54:43 | 显示全部楼层
就是我 发表于 2015-9-4 15:49
首先谢谢上面各位的关注和指点;
下午我又按照视频重新码了一遍,编译以后没有出现上午所提示的警告出现 ...

led.h库文件应该在main.c里引用,#include”led.h“,而且引用的要和led.h(创建时的文件名)的大小写保持一致,我就是没有在main.c里引用led.h文件出现了和你一样的问题,引用之后再编译,就没有错误了,把.hex文件烧录到芯片,跑马灯也亮了。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-8-13
在线时间
9 小时
发表于 2019-8-13 17:39:32 | 显示全部楼层
本帖最后由 八月初一 于 2019-8-13 17:48 编辑

已解决,谢谢
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2022-4-23
在线时间
2 小时
发表于 2022-4-25 09:47:29 来自手机 | 显示全部楼层
我也是这个问题,不知道为啥
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2022-4-23
在线时间
2 小时
发表于 2022-4-25 09:47:53 来自手机 | 显示全部楼层
和视频完全一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 10:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表