Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 12.05.2011, 11:15  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
Печаль IAR: ругается на передачу указателя на структуру в функцию

Имеется прототип функции в header void Draw_Text( struct FONT __flash *font);
описание структуры в header :
struct FONT
{
unsigned char Height; // Высота символа в пикселах.
unsigned char Width; // Ширина символа в пикселах.
unsigned char Count; // Число символов в шрифте минус один.
unsigned char __flash *pData; // Адрес таблицы с описанием символов шрифта.
};

extern __flash struct FONT Font_6x8;
extern __flash unsigned char Font_6x8_Data[];

//----------------------------------------------

В файле "Font_6x8.c"

__flash struct FONT Font_6x8 =
{
8,
6,
255,
&Font_6x8_Data[0] };

__flash unsigned char Font_6x8_Data[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3e, 0x45, 0x51, 0x45, 0x3e,
............................................
............................................};
Компилятор выдает:
Warning[Pe231]: declaration is not visible outside of function

Что я не так деляю подскажите
Реклама:
heady69 вне форума  
Сказали "Спасибо" heady69
warel (27.06.2019)
Непрочитано 13.05.2011, 00:32  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: IAR: ругается на передачу указателя на структуру в функцию

правильно будет (учим основы, да?):
void Draw_Text (FONT *font);

а так как у тебя - это создание автоматической переменной внутри заголовка
Hives вне форума  
Сказали "Спасибо" Hives
warel (27.06.2019)
Непрочитано 13.05.2011, 00:52  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: IAR: ругается на передачу указателя на структуру в функцию

Правильно будет
Код:
typedef __flash struct 
{
 unsigned char Height; // Высота символа в пикселах.
 unsigned char Width; // Ширина символа в пикселах.
 unsigned char Count; // Число символов в шрифте минус один.
 unsigned char __flash *pData; // Адрес таблицы с описанием символов шрифта.
 } FONT_t;

FONT_t FONT;

void Draw_Text( FONT_t  *font);
kison вне форума  
Сказали "Спасибо" kison
warel (27.06.2019)
Непрочитано 13.05.2011, 05:15  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: IAR: ругается на передачу указателя на структуру в функцию

сразу вопрос: и зачем __flash в определении структуры?
Hives вне форума  
Сказали "Спасибо" Hives
warel (27.06.2019)
Непрочитано 13.05.2011, 12:13  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: IAR: ругается на передачу указателя на структуру в функцию

Сообщение от kison Посмотреть сообщение
Правильно будет
Код:
typedef __flash struct 
{
 unsigned char Height; // Высота символа в пикселах.
 unsigned char Width; // Ширина символа в пикселах.
 unsigned char Count; // Число символов в шрифте минус один.
 unsigned char __flash *pData; // Адрес таблицы с описанием символов шрифта.
 } FONT_t;

FONT_t FONT;

void Draw_Text( FONT_t  *font);
Через typedef я пробовал-неопределенный индентификатор FONT (в данном случае FONT_t).
Сейчас изменил входные параметры функции,"накрапал" макрос,все заработало.Но хотелось красиво...
heady69 вне форума  
Сказали "Спасибо" heady69
warel (27.06.2019)
Непрочитано 13.05.2011, 13:11  
Moto_V3x
Частый гость
 
Регистрация: 10.10.2008
Сообщений: 38
Сказал спасибо: 32
Сказали Спасибо 14 раз(а) в 7 сообщении(ях)
Moto_V3x на пути к лучшему
По умолчанию Re: IAR: ругается на передачу указателя на структуру в функцию

А можно увидеть конечный вариант.
Moto_V3x вне форума  
Сказали "Спасибо" Moto_V3x
warel (27.06.2019)
Непрочитано 13.05.2011, 13:41  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: IAR: ругается на передачу указателя на структуру в функцию

Сообщение от Hives Посмотреть сообщение
сразу вопрос: и зачем __flash в определении структуры?
Понятия не имею. Но в функцию передается struct FONT __flash *font - значит структура во флеши. Можно тип и без этого определить, но придется указать __flash при создании экземпляра структуры.

Сообщение от heady69 Посмотреть сообщение
Через typedef я пробовал-неопределенный индентификатор FONT (в данном случае FONT_t).
Его просто надо в заголовочник поместить. И подключить ко всем файлам которые должны знать о этом типе данных. Все однозначно получится.
kison вне форума  
Сказали "Спасибо" kison
warel (27.06.2019)
Непрочитано 17.05.2011, 12:01  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: IAR: ругается на передачу указателя на структуру в функцию

Сообщение от kison Посмотреть сообщение
Правильно будет
Код:
typedef __flash struct 
{
 unsigned char Height; // Высота символа в пикселах.
 unsigned char Width; // Ширина символа в пикселах.
 unsigned char Count; // Число символов в шрифте минус один.
 unsigned char __flash *pData; // Адрес таблицы с описанием символов шрифта.
 } FONT_t;

FONT_t FONT;

void Draw_Text( FONT_t  *font);
Блин! Наступил на грабли. В хедере описание структуры было после описания функции. В Keil-е не актуально было. Теперь не нравится структура в файле Font_6x8.c Пишет- Error[Pe070]: incomplete type is not allowed Хедер в файле прописан
heady69 вне форума  
Сказали "Спасибо" heady69
warel (27.06.2019)
Непрочитано 17.05.2011, 12:07  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: IAR: ругается на передачу указателя на структуру в функцию

Сообщение от Moto_V3x Посмотреть сообщение
А можно увидеть конечный вариант.
Макрос:
#define Draw_Text( font) \
Draw_Txt((font)-›Width, (font)-›Height, (font)-›pData);

А на месте старой функции Draw_Text:
void Draw_Txt( unsigned char Width, unsigned char Height, unsigned char __flash *pData);
heady69 вне форума  
Сказали "Спасибо" heady69
warel (27.06.2019)
Непрочитано 17.05.2011, 15:40  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: IAR: ругается на передачу указателя на структуру в функцию

Сообщение от heady69 Посмотреть сообщение
Теперь не нравится структура в файле Font_6x8.c Пишет- Error[Pe070]: incomplete type is not allowed Хедер в файле прописан
Структура то переписана?
Код:
#include "то где определен тип"
extern __flash unsigned char Font_6x8_Data[];
FONT_t Font_6x8 = {8,6,255,Font_6x8_Data};
Впрочем можно и как было, но явно приводить тип указателя при вызове функции.
Код:
Draw_Text((FONT_t*)&Font_6x8);
Но это плохой стиль.

Последний раз редактировалось kison; 17.05.2011 в 15:43.
kison вне форума  
Сказали "Спасибо" kison
warel (27.06.2019)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot