shsmszdh Ответов: 1

Продолжайте:как я могу решить эти синтаксические ошибки codevisionavr?


hc05.h
#ifndef	_HC05_H_
#define	_HC05_H_ 	1


#include <io.h>;
#include <delay.h>;
#include <usart.h>;

char hc_05_buffer1[25], hc_05_buffer2[50];
char temp;

void hc_05_bluetooth_transmit_byte(char data_byte);
char hc_05_bluetooth_receive_byte(void);
void hc_05_bluetooth_transmit_string(char *transmit_string);
void hc_05_bluetooth_transmit_command(char *transmit_string);
char *hc_05_bluetooth_receive_string(char *receive_string, unsigned char terminating_character);
unsigned char hc_05_bluetooth_at_command_mode_test(void);
unsigned char hc_05_bluetooth_device_name_change(char *device_name);
unsigned char hc_05_bluetooth_get_version(void);
unsigned  char hc_05_bluetooth_change_baud_rate(long int baud_rate);
unsigned  char hc_05_bluetooth_pin_change(char *new_pin);


void hc_05_bluetooth_transmit_byte(char data_byte)
{
	usart_data_transmit(data_byte);
}
char hc_05_bluetooth_receive_byte(void)
{
	return usart_data_receive();
}
void hc_05_bluetooth_transmit_string(char *transmit_string)
{
	usart_string_transmit(transmit_string);
}
char *hc_05_bluetooth_receive_string(char *receive_string, unsigned char terminating_character)
{
	unsigned char temp=0x00;
	for(unsigned char i=0;;i++)
	{
		*(receive_string+i)=usart_data_receive();
		if(*(receive_string+i)==terminating_character)
			break;
		else
			temp++;
	}
	*(receive_string+temp)=&#39;\0&#39;;
	return receive_string;
}
unsigned char hc_05_bluetooth_at_command_mode_test(void)
{
	UBRRL=12;
	delay_ms(500);
	usart_string_transmit(&quot;AT&quot;);
	usart_data_transmit(0x0d);
	usart_data_transmit(0x0a);
	usart_string_receive(hc_05_buffer1,0x0d);
	temp=usart_data_receive();
	if(!(strcmp(hc_05_buffer1,&quot;OK&quot;)))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

unsigned  char hc_05_bluetooth_change_baud_rate(long int baud_rate)
{
	UBRRL=12;
	delay_ms(500);
	
	if(baud_rate==4800)
	{
		usart_string_transmit(&quot;AT+UART=4800,0,0&quot;);
	}
	else if(baud_rate==9600)
	{
		usart_string_transmit(&quot;AT+UART=9600,0,0&quot;);
	}
	else if(baud_rate==19200)
	{
		usart_string_transmit(&quot;AT+UART=19200,0,0&quot;);
	}
	else if(baud_rate==38400)
	{
		usart_string_transmit(&quot;AT+UART=38400,0,0&quot;);
	}
	else if(baud_rate==57600)
	{
		usart_string_transmit(&quot;AT+UART=57600,0,0&quot;);
	}
	else if(baud_rate==115200)
	{
		usart_string_transmit(&quot;AT+UART=115200,0,0&quot;);
	}
	else if(baud_rate==230400)
	{
		usart_string_transmit(&quot;AT+UART=230400,0,0&quot;);
	}
	else if(baud_rate==460800)
	{
		usart_string_transmit(&quot;AT+UART=460800,0,0&quot;);
	}
	else if(baud_rate==921600)
	{
		usart_string_transmit(&quot;AT+UART=921600,0,0&quot;);
	}
	else if(baud_rate==1382400)
	{
		usart_string_transmit(&quot;AT+UART=1382400,0,0&quot;);
	}
	else
	{
		;
	}
	usart_data_transmit(0x0d);
	usart_data_transmit(0x0a);
	usart_string_receive(hc_05_buffer1,13);
	temp=usart_data_receive();
	
	if(!(strcmp(hc_05_buffer1,&quot;OK&quot;)))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

unsigned char hc_05_bluetooth_device_name_change(char *device_name)
{
	UBRRL=12;
	delay_ms(500);
	
	usart_string_transmit(&quot;AT+NAME=&quot;);
	usart_string_transmit(device_name);
	usart_data_transmit(0x0d);
	usart_data_transmit(0x0a);
	
	usart_string_receive(hc_05_buffer1,13);
	temp=usart_data_receive();
	
	if(!(strcmp(hc_05_buffer1,&quot;OK&quot;)))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

What I have tried:

Error: C:\cvavr\INC\hc05.h(34): can't open #include file: usart.h
Error: C:\cvavr\INC\hc05.h(53): undefined symbol 'usart_data_transmit'
Error: C:\cvavr\INC\hc05.h(66): undefined symbol 'unsigned'
Error: C:\cvavr\INC\hc05.h(66): undefined symbol 'i'
Error: C:\cvavr\INC\hc05.h(81): undefined symbol 'usart_string_transmit'
Error: C:\cvavr\INC\hc05.h(90): no matching if
Error: C:\cvavr\INC\hc05.h(103): undefined symbol 'usart_string_transmit'
Error: C:\cvavr\INC\hc05.h(145): undefined symbol 'usart_data_transmit'
Error: C:\cvavr\INC\hc05.h(154): no matching if
<pre lang="JavaScript">Error: C:\cvavr\INC\hc05.h(165): undefined symbol 'usart_string_transmit'

Ошибка: C:\cvavr\INC\hc05.h(177): нет соответствия, если
Ошибка: C:\cvavr\INC\hc05.h(187): должен объявить первым в блоке
Error: C:\cvavr\INC\hc05.h(188): undefined symbol 'usart_string_transmit'

Error: C:\cvavr\INC\hc05.h(205): undefined symbol 'strcmp'

Ошибка: C:\cvavr\INC\hc05.h(209): нет соответствия, если
Error: C:\cvavr\INC\hc05.h(220): undefined symbol 'usart_string_transmit'

Ошибка: C:\cvavr\INC\hc05.h(232): нет соответствия, если

1 Ответов

Рейтинг:
0

leon de boer

Это говорит вам о проблемах ... сначала разберитесь с основными

1.) usart. h-это файл, который не может быть найден. Оператор include ясно дает понять, что он должен находиться в каталогах библиотеки по умолчанию, но очевидно, что это не так. Я предполагаю, что usart.h-это последовательный файл связи, откуда бы вы ни взяли этот код, и вам нужно найти этот файл, а затем включить его должным образом. Это может быть стандартный файл для компилятора AVR C, учитывая, откуда он пытается быть включен, но это не стандартный файл C. В любом случае вам нужно найти файл или создать свои собственные соответствующие функции. Код просто посылает и получает символы из последовательного порта, который не является ракетостроением, чтобы понять.

2.) strcmp-это стандартная функция C в блоке в файле стандартной библиотеки "string. h". Он также должен быть включен.

#include <string.h>

я это исправлю
Функция библиотеки C-strcmp()[^]

Остальные ошибки выглядят как синтаксис, основанный на том, что компилятор не может преодолеть эти две проблемы. Сначала исправьте их, а остальные должны отпасть.


shsmszdh

спасибо за ваши предложения я их сделал и ошибки свел к этим:
Ошибка: C:\cvavreval\inc\usart.h(114), #include-d from: hc05. h: неопределенный символ 'unsigned'
Ошибка: C:\cvavreval\inc\usart.h(114), #include-d from: hc05. h: неопределенный символ 'i'
Ошибка: C:\cvavreval\inc\usart.h(117), #include-d from: hc05. h: неопределенный символ 'i'
Ошибка: C:\cvavreval\inc\hc05.h(67), #include-d from: hc1. c: неопределенный символ 'unsigned'
Ошибка: C:\cvavreval\inc\hc05.h(67), #include-d from: hc1. c: неопределенный символ 'i'
Ошибка: C:\cvavreval\inc\hc05.h(70), #include-d from: hc1. c: неопределенный символ 'j'
Ошибка: C:\cvavreval\inc\hc05.h(188), #include-d from: hc1.c: должен объявить первым в блоке

leon de boer

То же самое, что ошибки-это синтаксис из чего-то более раннего ... ключевое слово "unsigned" известно каждому компилятору C, поэтому синтаксический анализатор компилятора по существу потерпел крах. Первая ошибка находится в строке 67, поэтому проблема заключается в этих первых 67 строках. Есть ли какие-либо предупреждения в предыдущих строках???

Не игнорируйте предупреждения, когда у вас есть такого рода ошибки, вам нужно иметь дело с проблемами в линейном порядке. Итак, наш вопрос заключается в том, что происходит не так в первых 66 строках USART.H это вызывает проблему в строке 67. Посмотрите на любые предупреждения в этих ранних строках и, если все остальное не удастся, напишите Мне первые 67 строк USART. H

shsmszdh

Я видел эти первые 66 строк usart. h, но после того, как я выбрал кнопку build all, для них не было никаких предупреждений !!!!!!!!!!!!!!!!