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

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

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

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

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

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


 
Опции темы
Непрочитано 20.06.2015, 23:10  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Пишем свое API

Сообщение от Easyrider83 Посмотреть сообщение
Продолжение следует...
ну что там с продолжением? )))
Реклама:
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
picavr вне форума  
Непрочитано 21.06.2015, 01:04  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Пишем свое API

Отпуск кончился, теперь трудовыебудни )) не успеваю. А чего теперь писать будем? Progress bar? Окно с элементами управления?
Easyrider83 вне форума  
Непрочитано 21.06.2015, 01:07  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,538
Сказал спасибо: 698
Сказали Спасибо 4,313 раз(а) в 1,977 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: Пишем свое API

Сообщение от Easyrider83 Посмотреть сообщение
трудовыебудни
Звучит задорно и многообещающе, надо взять на вооружение. А без трудо ваще зловеще. Похоже на специфику работы некоторых дам. Новый вклад в народное творчество.
Поразмыслим на выеходных.
__________________
Я не помогаю. Я провоцирую думать.
Не дай вам Бог плохих контактов.

Последний раз редактировалось Kabron; 21.06.2015 в 01:18.
Kabron вне форума  
Сказали "Спасибо" Kabron
Sukhanov (21.08.2015)
Непрочитано 21.06.2015, 19:17  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Пишем свое API

Сообщение от Easyrider83 Посмотреть сообщение
Progress bar? Окно с элементами управления?
думаю окошко более полезно?
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
picavr вне форума  
Непрочитано 20.08.2015, 00:11  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Пишем свое API

Итак, я решил продолжить. С новыми элементами API пока притормозим, но не много времени уделим FreeRTOS. Зачем нам операционка, скажете вы? Дело в том, что те задачи, которые раньше требовали от нас кучу терпения и ресурсов теперь делается легко и быстро. Простой пример - вывод информации на дисплей. Дело в том, что доступ к дисплею может иметь несколько процессов. И каждый из них должен как-то легко и просто выбросить информацию на дисплей и не дожидаясь, пока она будет отрисована, завершиться. Как сделать одновременный доступ к ресурсам без применения RTOS? Можно, конечно, через кольцевой или двойной буфер, но это груда кода. А здесь - пара строчек.
Итак, мы будем выводить текст. Для этого нам понадобится некая элементарная структура. Позже мы будем передавать сам элемент API, а пока ограничимся элементарной структурой.
Код:
typedef struct
{
	u16 XStart; //начальные координаты по х и у
	u16 YStart;
	u16 Color; //цвет текста
	u16 BackColor; //цвет фона
	char Text[20]; //сам текст, не более 20 символов
}LCD_DataTypeDef;
И локально задекларируем очередь:
Код:
QueueHandle_t LCD_Queue;
Инитиализируем контроллер и таски:
Код:
int main ()
{
	stm32_Init();
	xTaskCreate( vInitTask, "InitTask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 5 , NULL);
	xTaskCreate( vLEDTask,  "LED Task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 3 , NULL);
	vTaskStartScheduler();	
	return 0;
}
Собственно, сам таск, который инитиазирует переферию и, чтобы принести еще не много пользы, будет выбрасывать информацию на дисплей.
Код:
void vInitTask(void * pvArg)
{
	LCD_Initializtion();
	LCD_BackLight_Init();	  
  LCD_Clear(Blue);
	LCD_Queue = xQueueCreate(10, sizeof(struct LCD_DataTypeDef *) + 20);
	xTaskCreate( vLCD_HandleThread,  "LCD Thread", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1 , NULL);
	//vTaskDelete( NULL );	// этой командой мы убиваем таск и освобождаем память
	while(1)
	{
		static LCD_DataTypeDef LCD_Data = {120, 0, Green, Black, "BYE WORLD"};
		if (LCD_Queue) xQueueSend(LCD_Queue, &LCD_Data, 0);
		if (LCD_Data.YStart ‹ 300) LCD_Data.YStart += 16;	
		vTaskDelay(630);
	}
}
А этим таском будем мигать диодом и тоже выбрасывать информацию на дисплей:
Код:
void vLEDTask(void * pvArg)
{  	
  while(1)
  {
		static LCD_DataTypeDef LCD_Data = {0, 0, Red, Black, "HALLO WORLD"};
		if (LCD_Queue) xQueueSend(LCD_Queue, &LCD_Data, 0);
		if (LCD_Data.YStart ‹ 300) LCD_Data.YStart += 16;
		vTaskDelay(520);	
		
		PIN_INV(PB0);
  }
}
Как легко догадаться, командой xQueueSend мы заполняем очередь новыми элементами. Ну и собственно сборщик информации из очереди:
Код:
void vLCD_HandleThread (void * pvArg)
{
	LCD_DataTypeDef LCD_Data;
	while(1)
	{
		xQueueReceive(LCD_Queue, &LCD_Data, 0);
		GUI_Text(LCD_Data.XStart, LCD_Data.YStart, LCD_Data.Text, LCD_Data.Color, LCD_Data.BackColor);
		vTaskDelay(10);
	}
}
Вопросы сюда. Проект тут.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
-shiva- (22.08.2015)
Непрочитано 20.08.2015, 00:51  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Пишем свое API

Сообщение от Easyrider83 Посмотреть сообщение
GUI_Text(LCD_Data.XStart, LCD_Data.YStart, LCD_Data.Text, LCD_Data.Color, LCD_Data.BackColor);
Как-то не кошерно это;
Сделать GUI_Text(&LCD_Data) - это более по-взрослому;
Boba_spb вне форума  
Непрочитано 20.08.2015, 01:02  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Пишем свое API

Сообщение от Boba_spb Посмотреть сообщение
Как-то не кошерно это;
Сделать GUI_Text(&LCD_Data) - это более по-взрослому;

Да, но нет
Давайте не уходить от темы.
Easyrider83 вне форума  
Непрочитано 20.08.2015, 01:37  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Пишем свое API

Сообщение от Boba_spb Посмотреть сообщение
Вы ж молодежь учите !
А как-то кривовато все. Тут, например YStart - всегда будет равно 16. И будет ученик репу чесать, что эт текст по экрану не двигается? И будет думать, что чего эт текст в 0 позиции не был, а сразу на 16 да и там замер.

Будьте внимательнее - они и так плохо учатся сейчас, а Вы еще их к ошибкам приучаете.
Смотрите внимательнее. Переменная типа static. Текст движется.
Чего здесь реально не правильно сделано - это нет проверки готовности данных в очереди:
Код:
if (xQueueReceive(LCD_TextQueue, &LCD_TextData, 0) == pdTRUE)
			GUI_Text(LCD_TextData.XStart, LCD_TextData.YStart, LCD_TextData.Text, LCD_TextData.Color, LCD_TextData.BackColor);

Последний раз редактировалось Easyrider83; 20.08.2015 в 01:45.
Easyrider83 вне форума  
Непрочитано 20.08.2015, 02:18  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Пишем свое API

Ну да static - прошу пардона

Последний раз редактировалось Boba_spb; 20.08.2015 в 02:32.
Boba_spb вне форума  
Непрочитано 21.08.2015, 14:17  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Пишем свое API

хм.... эта тема вообще кому-нибудь интересна?
Easyrider83 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
свое USB устройство ESWANT Микроконтроллеры, АЦП, память и т.д 2 08.09.2009 14:58


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


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