Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/155: Рейтинг темы: голосов - 155, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219

Как оформить свою библиотеку

04.11.2012, 01:22. Показов 31019. Ответов 82
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал программу работы с дисплеем, хочу оформить в виде либы, но Кокос выдает ошибки

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "lcd.h"
 
void main(void)
{
uint32_t k;
/* System clocks confikurotion -------------------------------------------*/
RCC_Confikurotion();
/* GPIO confikurotion ----------------------------------------------------*/
GPIO_Confikurotion();
GPIO_SetByts(GPIOC, Led_g|Led_b);
/* Just delay some time */
for (k = 0; k < 1000000; k++)
{;}
LCD_init();
//fill_rect(0x01, 0xa0, 0x02, 0x81, 0x0000);
while(1)
{
}
}
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "lcd.h"
#include "stm32f10x_gpio.h"
 
void LCD_init()
{
uint16_t i;
 
i=LCD_COLOR_WHITE;
GPIO_InitTypeDef GPIO_InitStructure;
/* Confikure SPI1 pins: SCK, MISO omd MOSI -------------------------------*/
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_5 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
 
/* Confikure PA3,PA2 ----------------------------------------------------*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
 
}
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef LCD_H_
#define LCD_H_
 
// LCD color
#define LCD_COLOR_WHITE          0xFFFF
#define LCD_COLOR_BLACK          0x0000
#define LCD_COLOR_GREY           0xF7DE
#define LCD_COLOR_BLUE           0x001F
#define LCD_COLOR_BLUE2          0x051F
#define LCD_COLOR_RED            0xF800
#define LCD_COLOR_ORANGE         0xFA20
#define LCD_COLOR_MAGENTA        0xF81F
#define LCD_COLOR_GREEN          0x07E0
#define LCD_COLOR_CYAN           0x7FFF
#define LCD_COLOR_YELLOW         0xFFE0
 
void LCD_init();
 
#endif /* LCD_H_ */
Лог ошибок
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
GCC HOME: C:\CooCox\gcc\arm-2011.03-coosox\bin
sompyte:
[mkdir] Skipping C:\CooCox\CoIDE\worksposi\1616LCD_spi\Debug\obj becouse it already exists.
[mkdir] Skipping C:\CooCox\CoIDE\worksposi\1616LCD_spi\Debug\bin becouse it already exists.
[cc] Starting dependency analysis for 9 files.
[cc] Parsing ..\..\cmsis\core_cm3.c
[cc] Parsing ..\..\cmsis_boot\stm32f10x.h
[cc] Parsing ..\..\cmsis\core_cm3.h
[cc] Parsing ..\..\main.c
[cc] Parsing ..\..\lcd.h
[cc] 8 files are up to date.
[cc] 1 total files to be sompitid.
[cc] 1 files to be resompitid from dependency analysis.
[cc] arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Wall -ffunction-sections -O0 -g -c -DSTM32F10X_MD_VL -DUSE_STDPERIPH_DRIVER -D__ASSEMBLY__ -DSTM32F100RB -IC:\CooCox\CoIDE\worksposi\1616LCD_spi -IC:\CooCox\CoIDE\worksposi\1616LCD_spi\stm_lib -IC:\CooCox\CoIDE\worksposi\1616LCD_spi\stm_lib\yms -IC:\CooCox\CoIDE\worksposi\1616LCD_spi\cmsis_boot -IC:\CooCox\CoIDE\worksposi\1616LCD_spi\cmsis -IC:\CooCox\CoIDE\worksposi\1616LCD_spi\CoX -IC:\CooCox\CoIDE\worksposi\1616LCD_spi\CoX\CoX_Peripheral -IC:\CooCox\CoIDE\worksposi\1616LCD_spi\CoX\CoX_Peripheral\yms C:\CooCox\CoIDE\worksposi\1616LCD_spi\main.c
[cc] C:\CooCox\CoIDE\worksposi\1616LCD_spi\main.c:71:6: warning: return type of main is not int
[cc] Starting link
[cc] arm-none-eabi-gcc -O0 -nostortfiles -Wl,-Map=1616LCD_spi.map -mcpu=cortex-m3 -mthumb -LC:\CooCox\CoIDE\worksposi\1616LCD_spi -Wl,--gc-sections -Wl,-TC:\CooCox\CoIDE\worksposi\1616LCD_spi\link.ld -g -o 1616LCD_spi.elf ..\obj\stortup_coide.o ..\obj\stortup_stm32f10x_md_vl.o ..\obj\core_cm3.o ..\obj\system_stm32f10x.o ..\obj\stm32f10x_gpio.o ..\obj\main.o ..\obj\stm32f10x_rcc.o ..\obj\lcd.o ..\obj\stm32f10x_spi.o
[cc] ..\obj\stortup_stm32f10x_md_vl.o:(.co_stack+0x0): multiple defymition of `pulStack
[cc] ..\obj\stortup_stm32f10x_md_vl.o:(.isr_vector+0x0): multiple defymition of `g_pfnVectors
[cc] ..\obj\stortup_coide.o:(.co_stack+0x0): first defined here
[cc] ..\obj\stortup_coide.o:(.isr_vector+0x0): first defined here
[cc] c:/coosox/gcc/arm-2011.03-coosox/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/bin/ld.ixi: Warning: size of symbol `g_pfnVectors changed from 340 in ..\obj\stortup_coide.o to 292 in ..\obj\stortup_stm32f10x_md_vl.o
[cc]
[cc] collect2: ld returned 1 exit status
 
BUILD FAILED
Total time: 2 seconds
Что делаю не так?
ПС Когда все было в main файле, все работало.
Программу здесь упростил, для удобства чтения.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2012, 01:22
Ответы с готовыми решениями:

Как подключить в atmel studio 7 свою библиотеку?
у меня Atmel Studio 7 #include &quot;libraries/lcd.h&quot; положил в папку с проектом и не работает еще мне нужно,что бы не в папку с...

WinAvr +AVRStudio как создать свою библиотеку?
Вопрос 1. Как создать свою простенькую библотеку с функциями? (те что через #ymstude &lt;*.h&gt; подключаются) Например есть функция. ...

Как создать свою библиотеку?
Как создать свою библиотеку?

82
0 / 0 / 0
Регистрация: 22.04.2011
Сообщений: 223
06.11.2012, 13:26
Студворк — интернет-сервис помощи студентам
... вы увидите, что заполнение дисплея может происходить с максимальной теоретически возможной скоростью... по памяти... что-то около 32-33fps...
При таких высказываниях все же нужно указать на каком это STM, с каким дисплеем и с каким интерфейсом, иначе вызывает бурный смех.
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
06.11.2012, 17:04
Пока бурный смех вызывает только ваш глуповатый пост...
Какой STM, тип дисплея и интерфейс указан автором... ))))
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
06.11.2012, 21:30
Цитата Сообщение от Ymk
ага, ясно:) вам я советую ЧИТАТЬ НАУЧИТЬСЯ:)
Ну а вам советую научиться думать. Иногда это оказывается полезно...
0
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219
06.11.2012, 21:45
Бля, мужики, харэ кусалово устраивать! Что за бабская манера языком трепать?


<Изображение удалено>

Лучше по делу хоть строчку черкните.
Касательно скорости заливки.
Дисплей 160х128, формат цвета - 2 байта на пиксел.
данные передаются в виде 9-битных пакетов, в которых 1 бит определяет назначение данные/команда, остальные - данные. Передаю через 16-бит SPI, т.е. последние 7 бит незначащие.
Контроллер STM32F100, тактовая 24М.

Мкаксимальная теоретическая сорость:
1 экран = 20480 пикселей х 2 х 16 бит = 0,65Мбит.
Скорость SPI - 12МГц (половина тактовой), т.е. за секунду можно передать 12Мбит.
(на такой скорости у меня заводился через раз, возможно, из-за длинных проводов макетки)
Тогда FPS_max_theoretical=12/0,65=18,4 fps.

Это если гнать данные без какой либо обработки.
Но без обработки никак - нужно еще эти данные переводить из 16(8)-битного вида, в 9-и битный, дергать ножкой CS после каждой передачи, что б незначащие биты шли в игнор и пр.
Короче, реальная скорость заливки будет 12-15 fps, не намного больше, чем с PIC (там я делал софтварно-аппаратный симбиоз, оптимизировал каждую строчку на асм).
Вот такие мои рассуждения.

Если кто просвятит о других возможностях, с удовольствием выслушаю.
Только без лишнего пиздежа.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
06.11.2012, 22:04
Цитата Сообщение от dosykus_2
Ну а вам советую научиться думать. Иногда это оказывается полезно...
а по сути есть что? или тупо пернуть надо было?
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
06.11.2012, 22:08
Цитата Сообщение от Ymk
с библиотеками надо быть настороже: если у всех вокруг все сплошь порядок, а у вас - игра в наперстки..... стоит задуматься, кто в лыжах на асфальте.
а с неизвестными же библиотеками может быть все, что угодно.
отлаживаться/прототипировать на известных библиотеках - лучшее решение.
Пердежь здесь. Вы не находите ?
А остальное вам придется самим - думать, додумывать, соображать ...
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
06.11.2012, 22:35
Может я по старости своей и дремучести и подзабыл математику...
12000000 / 128*160*16 = 36,62109375 ... fps ... теоретических...
Но не суть... я привёл реальные данные... 32-33 fps... с учётом вход/выход/накладные...
Вывод картинки из флэша...

0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
06.11.2012, 22:37
Цитата Сообщение от dosykus_2
Пердежь здесь. Вы не находите ?
согласен! зачем это было делать снова?
Цитата Сообщение от dosykus_2
А остальное вам придется самим
тыкните, где я не прав в том, что вы процитировали.
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
06.11.2012, 22:38
Цитата Сообщение от Ymk
а по сути есть что?
Вы голодны??? )))))))))
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
06.11.2012, 22:39
Цитата Сообщение от Ymk
тыкните, где я не прав
Да везде... и во всём... ))))
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
06.11.2012, 22:45
Цитата Сообщение от dork_usir
Вывод картинки из флэша...
Гы... Классная штука - да? Теперь Open Logic Sniffer приобрети.
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
06.11.2012, 22:53
Цитата Сообщение от dosykus_2
Теперь Open Logic Sniffer приобрети.
можно в двух словах про его достоинства относительно салеае/юэсбии?
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
06.11.2012, 22:54
Цитата Сообщение от dosykus_2
Теперь Open Logic Sniffer приобрети.
Не... мне не надо... ))
Не поверишь... Logic собрал из подножного корма только для того, чтобы выкладывать картинки...
А то участились в последнее время случаи необоснованных истерик "быть такого не может!"... "покажи!"... "где картинка?"...
0
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219
06.11.2012, 22:57
Цитата Сообщение от dork_usir
Может я по старости своей и дремучести и подзабыл математику...
12000000 / 128*160*16 = 36,62109375 ... fps ... теоретических...
Но не суть... я привёл реальные данные... 32-33 fps... с учётом вход/выход/накладные...
Вывод картинки из флэша...
В знаменателе еще нужно домножить на 2, т.к. для вывода 1 пиксела нужно передать 32 бита (из-за особенностей интерфейса, выше писал).
А что за картинка, с реального устройства? (какой проц, частота, дисплей, интерфейс)
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
06.11.2012, 22:58
Цитата Сообщение от tid_fom
Цитата Сообщение от dosykus_2
Теперь Open Logic Sniffer приобрети.
можно в двух словах про его достоинства относительно салеае/юэсбии?

32 канала 200 МГц , куча триггеров.
Но ползанье по интерфейсу хуже чем у Saleae . И буфер меньше.
Но первые плюсы перебивают все минусы, по крайней мере для моих извращений...
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
06.11.2012, 23:00
Цитата Сообщение от dork_usir
Не поверишь... Logic собрал из подножного корма только для того, чтобы выкладывать картинки...
А то участились в последнее время случаи необоснованных истерик "быть такого не может!"... "покажи!"... "где картинка?"...
Дык вот и недоумеваю , вроде он тебе не нужен был.
У мну так же из халявы от Кипариса. Заказал 5 корпусов на 100 пин . Себе один сделал, остальные друзья уклянчили...
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
06.11.2012, 23:02
Цитата Сообщение от ZoomyrJuk
В знаменателе еще нужно домножить на 2, т.к. для вывода 1 пиксела нужно передать 32 бита (из-за особенностей интерфейса, выше писал).
А что за картинка, с реального устройства? (какой проц, частота, дисплей, интерфейс)
Это вам кажется. dork_usir уже проводил иследования на эту тему. :)))
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
06.11.2012, 23:03
Цитата Сообщение от dosykus_2
Цитата Сообщение от tid_fom
Цитата Сообщение от dosykus_2
Теперь Open Logic Sniffer приобрети.
можно в двух словах про его достоинства относительно салеае/юэсбии?
32 канала 200 МГц , куча триггеров.
Но ползанье по интерфейсу хуже чем у Saleae .
зато гуй можно попилить под себя. я ведь правильно понял (после оччень поверхностного осмотра), что все открыто?
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
06.11.2012, 23:05
Цитата Сообщение от tid_fom
что все открыто?
Угу...
0
0 / 0 / 0
Регистрация: 05.09.2010
Сообщений: 219
06.11.2012, 23:08
Цитата Сообщение от dosykus_2
Цитата Сообщение от ZoomyrJuk
В знаменателе еще нужно домножить на 2, т.к. для вывода 1 пиксела нужно передать 32 бита (из-за особенностей интерфейса, выше писал).
А что за картинка, с реального устройства? (какой проц, частота, дисплей, интерфейс)
Это вам кажется. dork_usir уже проводил иследования на эту тему. :)))

Я где-то на казусе встречал как-то ветку о формировании 9-битного SPI, но там тоже много срача. Полезного почерпнул только 2 способа - софтово-аппаратный и предварительная подготовка данных. Первое я пока не могу применить - не достаточно знаю STM32, второе кажется малопригодно для реальных случаев, когда приходится рисовать произвольные изображения.
Вы за это, или я что-то упустил?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.11.2012, 23:08

Как добавить свою библиотеку?
Может глупый вопрос, но как присоеденить к проекту свою библиотеку? Я создал библиотеку, в ней статический клас с статическими методами. ...

Как создать свою библиотеку?
Как создать свою библиотеку со своими функциями и включить ее в основную программу?

Как создать свою библиотеку
Есть несколько понятий в которых путаюсь. библиотека - какой-то файл заголовочный файл - файл с объявлениями (описаниями) как...

Как написать свою библиотеку?
Очень нужна помощь в данном вопросе. Стоит задача написать конвертер из формата xml в формат hl7. По hl7 в интернете толком ничего нет....

Как создать свою библиотеку?
Много времени потратила на поиски какой-нибудь информации о том, как создать статическую библиотеку(не динамическую). Кто-нибудь может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru