打印
[STM32F1]

程序编译错误问题

[复制链接]
2618|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nikiski|  楼主 | 2015-6-28 16:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    菜鸟用keil编译一段将外部按键作为中断控制LED灯发光熄灭的程序。
    编译后提示LY-STM32.axf: Error: L6218E: Undefined symbol EXTI_ClearITpendingBit (referred from main.o).
    EXTI_ClearITpendingBit 是STM32库函数中清除中断的,在stm32f10x_exti.c文件中有定义,函数原型声明在stm32f10x_exti.h文件中。
    main函数中包含了#include "pbdata.h"
pbdata.h文件内容如下:
#ifndef _pbdata_H
#define _pbdata_H

#include "stm32f10x.h"
#include "stm32f10x_exti.h"
#include   "misc.h"

//定义变量

extern u8 dt;

//定义函数

void delay(u32 nCount);

#endif


main函数如下:
#include "pbdata.h"

void RCC_Configuration(void);
void GPIO_Configuration(void);
void EXTI_Configuration(void);
void NVIC_Configuration(void);
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
int main(void)
{
   RCC_Configuration();        //系统时钟初始化
   GPIO_Configuration();//端口初始化
   EXTI_Configuration(); //SET EXTRERNAL IT

   NVIC_Configuration(); //
   while(1);
        /*while(1)
        {
                if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)==Bit_RESET)
                {
                        //LED 发光
                        GPIO_ResetBits(GPIOB,GPIO_Pin_5);
                }
                else
                {
                   //LED 熄灭
                   GPIO_SetBits(GPIOB,GPIO_Pin_5);
                }
        }*/
}

void RCC_Configuration(void)
{
    SystemInit();
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
}

void GPIO_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;       
        //LED
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_Init(GPIOB,&GPIO_InitStructure);

        //KEY
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
}
void EXTI_Configuration(void)
{
        EXTI_InitTypeDef EXTI_InitStructure;
         
        EXTI_ClearITpendingBit(EXTI_Line5);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);
        EXTI_InitStructure.EXTI_Line=EXTI_Line5;
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising_Falling;
        EXTI_InitStructure.EXTI_LineCmd=ENABLE;
        EXTI_Init(&EXTI_InitStructure);
}
void NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_IntStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_IntStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
        NVIC_IntStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_IntStructure.NVIC_IRQChannelSubPriority = 2;
        NVIC_IntStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_IntStructure);
}


编译完成后提示红色行部分错误Error: L6218E: Undefined symbol EXTI_ClearITpendingBit (referred from main.o).
求大神解答!先谢过!^_^
沙发
mintspring| | 2015-6-28 22:06 | 只看该作者
RCC_Configuration();        //系统时钟初始化    GPIO_Configuration();//端口初始化    EXTI_Configuration(); //SET EXTRERNAL IT     NVIC_Configuration(); //    while(1);

使用特权

评论回复
板凳
mintspring| | 2015-6-28 22:07 | 只看该作者
说是那个函数没有定义,你看看右键定位能否到达那个函数原型

使用特权

评论回复
地板
可可球| | 2015-6-29 22:06 | 只看该作者
没有定义,是不是函数没有声明

使用特权

评论回复
5
冰河w| | 2015-6-30 16:54 | 只看该作者
查看函数原型,找找问题

使用特权

评论回复
6
309030106| | 2015-6-30 21:09 | 只看该作者
右键定位能否到达那个函数原型

使用特权

评论回复
7
lxyppc| | 2015-6-30 21:28 | 只看该作者
LY-STM32.axf: Error: L6218E: Undefined symbol EXTI_ClearITpendingBit (referred from main.o).

LY-STM32.axf:  你要生成的elf文件。啥是elf,自己Google后不懂再问

Error: L6218E 错误号6218,前缀L,这是个链接时错误。什么是链接,自己Google,不懂再问。错误号含义,编译器说明文档有详细说明

Undefined symbol EXTI_ClearITpendingBit (referred from main.o).
这个函数未定义(main.o中引用了此函数)

综上所述,在链接main这个文件的时候发现EXTI_ClearITpendingBit这个函数未定义,可能原因是包含这个函数的c文件没有加入到编译目标中。

这里假设
基本编译知识你们老师教了,并且你上课没打瞌睡

使用特权

评论回复
8
尤彼卡| | 2015-6-30 21:31 | 只看该作者
EXTI_ClearITpendingBit函数未定义

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

23

帖子

0

粉丝