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

2019-08-18 18:46发布

#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啊?   
求解。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
正点原子
1楼-- · 2019-08-18 20:59
回复【7楼】就是我:
---------------------------------
MDK乱报,此时,可以考虑关闭MDK,重新打开试试。
BMN李
2楼-- · 2019-08-18 22:57
你这里加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);

}


}
就是我
3楼-- · 2019-08-18 23:17


视频截图,
BMN李
4楼-- · 2019-08-19 01:01
回复【3楼】就是我:
---------------------------------
这个应该就你的而论。视频的截图说明不了什么,除非你的和视频的完全一样。
Rocks
5楼-- · 2019-08-19 01:17
 精彩回答 2  元偷偷看……
就是我
6楼-- · 2019-08-19 02:29
回复【5楼】Rocks:
---------------------------------
谢谢,视频里是小写的;   我在打的时候实际文件名是大写的,所以引用的时候也写的大写;

一周热门 更多>