OpenEdv-开源电子网

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

关于 error:unxefined symbol的问题

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-5-30
在线时间
2 小时
发表于 2018-6-20 11:55:27 | 显示全部楼层 |阅读模式
2金钱
本帖最后由 三尺飒沓 于 2018-6-20 14:59 编辑

..\OBJ\Template.axf: Error: L6218E: Undefined symbol DHT22_Read_Data (referred from main.o).
..\OBJ\Template.axf: Error: L6218E: Undefined symbol DHT22_Read_Bit (referred from dht22.o).
..\OBJ\Template.axf: Error: L6218E: Undefined symbol DHT22_Read_Byte (referred from dht22.o).

用的dht22温湿度传感器与dht11原理相同,参照dht11的实验结构写的,这几个函数都定义了,也包含头文件了,还是提示这个错误
main.c文件如下
#include "usart.h"
#include "led.h"
#include "delay.h"
#include "dht22.h"
#include "sys.h"

int main(void)
{
        u8 t=0;                           
        u8 temperature1,temperature2;              
        u8 humidity1,humidity2;
                NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        uart_init(115200);
        delay_init();
        led_Init();
        while(DHT22_Init())         {}
        while(1)
        {                        
                 if(t%10==0)               
                {                                                                          
                        DHT22_Read_Data(&temperature1,&temperature2,&humidity1,&humidity2);        
                        printf("温度:%d.%d\r\n",temperature1,temperature2);
                        printf("湿度:%d.%d\r\n",humidity1,humidity2);
                }                                   
                 delay_ms(10);
                t++;
                if(t==20)
                {
                        t=0;
                        led0=!led0;
                }
        }
}

dht22.h文件如下
#ifndef _dht22_H
#define _dht22_H
#include "sys.h"
#define DHT22_IO_IN()  {GPIOG->CRH&=0xFFFF0FFF;GPIOG->CRH|=8<<12;}
#define DHT22_IO_OUT() {GPIOG->CRH&=0xFFFF0FFF;GPIOG->CRH|=3<<12;}
#define DHT22_DQ_IN PGin(11)
#define DHT22_DQ_OUT PGout(11)

u8 DHT22_Init(void);
u8 DHT22_Read_Data(u8 *temp1,u8 *temp2,u8 *humi1,u8 *humi2);
u8 DHT22_Read_Byte(void);
u8 DHT22_Read_Bit(void);
u8 DHT22_Check(void);
void DHT22_Rst(void);
#endif


dht22.c文件如下
#include "dht22.h"
#include "delay.h"

void DHT22_Rst(void)
{
        DHT22_IO_OUT();
        DHT22_DQ_OUT=0;
        delay_us(700);
        DHT22_DQ_OUT=1;
        delay_us(30);
}

u8 DHT22_Check(void)
{
        u8 retry=0;
        DHT22_IO_IN();
        while(DHT22_DQ_IN&&retry<90)
        {
                retry++;
                delay_us(1);
        }
        if(retry>=90)return 1;            
        else retry=0;
        while(!DHT22_DQ_IN&&retry<90)
        {
                retry++;
                delay_us(1);
        }
        if(retry>=90)return 1;            
        return 0;
}

u8 DHT22_ReadBit(void)
{
                u8 retry=0;
        while(DHT22_DQ_IN&&retry<100)
        {
                retry++;
                delay_us(1);
        }
        retry=0;
        while(!DHT22_DQ_IN&&retry<100)
        {
                retry++;
                delay_us(1);
        }
        delay_us(40);
        if(DHT22_DQ_IN)return 1;
        else return 0;                  
}

u8 DHT22_ReadByte(void)
{
         u8 i,dat;
    dat=0;
        for (i=0;i<8;i++)
        {
                   dat<<=1;
            dat|=DHT22_Read_Bit();
    }                                                   
    return dat;
}

u8 DHT22_ReadData(u8 *temp1,u8 *temp2,u8 *humi1,u8 *humi2)
{
        u8 buf[5];
        u8 i;
        DHT22_Rst();
        if(DHT22_Check()==0)
        {
                for(i=0;i<5;i++)
                {
                        buf=DHT22_Read_Byte();
                }
                if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
                {
                        *humi1=buf[0];
                        *humi2=buf[1];
                        *temp1=buf[2];
                        *temp2=buf[3];
                }
        }else return 1;
        return 0;            
}

u8 DHT22_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
         
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);         
        
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                                
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                 
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
         GPIO_Init(GPIOG, &GPIO_InitStructure);        
         GPIO_SetBits(GPIOG,GPIO_Pin_11);
                           
        DHT22_Rst();  
        return DHT22_Check();

}





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10569
金钱
10569
注册时间
2017-2-18
在线时间
1913 小时
发表于 2018-6-20 12:23:56 | 显示全部楼层
这样的话建议发上工程看看
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-5-30
在线时间
2 小时
 楼主| 发表于 2018-6-20 14:49:50 | 显示全部楼层
peng1554 发表于 2018-6-20 12:23
这样的话建议发上工程看看

好的,已经重新编辑问题了
回复

使用道具 举报

2

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2018-5-14
在线时间
69 小时
发表于 2018-6-20 16:12:36 | 显示全部楼层
直接在main()前面声明一下看看还有没有错误
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 05:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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