Ошибка с библиотекой time.h - C (СИ)
Формулировка задачи:
Добрый день, столкнулся с проблемой связанной с библиотекой time.h. Хочу написать автомобильный спидометр. В дальнейшем собрать бортовой компьютер. До этого я делал на arduino, все прекрасно работало. Теперь решил переписать код под микроконтроллер atmega8. И вот тут то меня и постигла ошибка, при использовании функции clock() вылезают следующие ошибки:
1. undefined reference to `clock'
2. ld returned 1 exit status
Программирую я в Atmel studio 7
Вот код мое программы:
Вот такие ошибки выдает при сборке этого кода:
Вот такая схемка:
В Cи начинающий, код возможно не очень, но мне сейчас главное решить проблему))
Буду благодарен за любые наводки)
/* * GccApplication4.c * * Created: 02.07.2016 14:20:38 * Author : Иван */ #include <avr/io.h> #define F_CPU 8000000L //частота микроконтреллера 8мгц #include <time.h> #include <avr/interrupt.h> #include <util/delay.h> #include "n5110.h" //глабальные переменные int a = 1; volatile unsigned int NumberMomentSpeed = 0; volatile byte sz = 0; volatile unsigned long micros_sp = 0; volatile unsigned int speed = 0; unsigned long t = 0; int st = 0; void setup() //функция первоначальной настройки { DDRC = 0x0F; PORTC = 0x00; DDRD=0x00; PORTD=0xFF; Lcd_init(); Lcd_clear(); } void INTinit() //инициализация прерываний { MCUCR = (0<<ISC10) | (1<<ISC11);//0b00001000 регистр управления (падающий фронт) GICR = (1<<INT1);//0b10000000 общий регистр управления прерываниями (разрешить прерывание INT1) } ISR (INT1_vect) //прерывание по вектору INT1 { //тело прерывания NumberMomentSpeed++; if (!st) { micros_sp = clock(); } else { speed = (600000/(clock() - micros_sp)); } st = 1; sz = 30; } void lcd_output(char bu[]) //функция вывода на экран { Lcd_clear(); Lcd_print(6,1,FONT_1X,(unsigned char*) bu); Lcd_update(); } int main(void) //главная функция { setup(); INTinit(); sei(); //Чтобы установить ручками этот бит существует функция sei(), а чтобы сбросить - cli() while (1) //бесконечный цикл { if (sz != 0) { sz--; } else { //Если нет импульсов с датчика скорости, то скорость обнулить speed = 0; } char buferd[10]; itoa(NumberMomentSpeed, buferd, 10); lcd_output(buferd); } }
Решение задачи: «Ошибка с библиотекой time.h»
textual
Листинг программы
################################################################################ # Automatically-generated file. Do not edit! ################################################################################ SHELL := cmd.exe RM := rm -rf USER_OBJS := LIBS := PROJ := O_SRCS := C_SRCS := S_SRCS := S_UPPER_SRCS := OBJ_SRCS := ASM_SRCS := PREPROCESSING_SRCS := OBJS := OBJS_AS_ARGS := C_DEPS := C_DEPS_AS_ARGS := EXECUTABLES := OUTPUT_FILE_PATH := OUTPUT_FILE_PATH_AS_ARGS := AVR_APP_PATH :=$$$AVR_APP_PATH$$$ QUOTE := " ADDITIONAL_DEPENDENCIES:= OUTPUT_FILE_DEP:= LIB_DEP:= LINKER_SCRIPT_DEP:= # Every subdirectory with source files must be described here SUBDIRS := # Add inputs and outputs from these tool invocations to the build variables C_SRCS += \ ../main.c \ ../n5110.c PREPROCESSING_SRCS += ASM_SRCS += OBJS += \ main.o \ n5110.o OBJS_AS_ARGS += \ main.o \ n5110.o C_DEPS += \ main.d \ n5110.d C_DEPS_AS_ARGS += \ main.d \ n5110.d OUTPUT_FILE_PATH +=GccApplication4.elf OUTPUT_FILE_PATH_AS_ARGS +=GccApplication4.elf ADDITIONAL_DEPENDENCIES:= OUTPUT_FILE_DEP:= ./makedep.mk LIB_DEP+= LINKER_SCRIPT_DEP+= # AVR32/GNU C Compiler ./%.o: .././%.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 4.9.2 $(QUOTE)C:\Program Files\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.0.106\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega8 -B "C:\Program Files\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.0.106\gcc\dev\atmega8" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< # AVR32/GNU Preprocessing Assembler # AVR32/GNU Assembler ifneq ($(MAKECMDGOALS),clean) ifneq ($(strip $(C_DEPS)),) -include $(C_DEPS) endif endif # Add inputs and outputs from these tool invocations to the build variables # All Target all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES) $(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP) @echo Building target: $@ @echo Invoking: AVR/GNU Linker : 4.9.2 $(QUOTE)C:\Program Files\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="GccApplication4.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega8 -B "C:\Program Files\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.0.106\gcc\dev\atmega8" @echo Finished building target: $@ "C:\Program Files\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "GccApplication4.elf" "GccApplication4.hex" "C:\Program Files\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "GccApplication4.elf" "GccApplication4.eep" || exit 0 "C:\Program Files\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "GccApplication4.elf" > "GccApplication4.lss" "C:\Program Files\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "GccApplication4.elf" "GccApplication4.srec" "C:\Program Files\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "GccApplication4.elf" # Other Targets clean: -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) -$(RM) $(C_DEPS_AS_ARGS) rm -rf "GccApplication4.elf" "GccApplication4.a" "GccApplication4.hex" "GccApplication4.lss" "GccApplication4.eep" "GccApplication4.map" "GccApplication4.srec" "GccApplication4.usersignatures"
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д