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

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

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

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

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

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


 
Опции темы

Избавляюсь от HAL:

Непрочитано 06.04.2017, 19:40  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от NewWriter Посмотреть сообщение
Всё равно ведь такие вещи, как SDRAM
а я тут, расчувствовавшись и к прочей периферии недавно в одном проектике на F401 это применил, даже к USARTу закошерил. Периферию мне реально удобно показалось настраивать, проектик работает хорошо:
Код:
static  GPIO_TypeDef * const UsartGPIOInitTable[] = {
		GPIOA, 
		0
};
static uint8_t const UsartTxPINInitTable[] = {
		2,
		0
};
static uint8_t const UsartRxPINInitTable[] = {
		3,
		0
};
..........................
	uint8_t i = 0;
	//TX
	while(UsartGPIOInitTable[i] != 0)
	{
		gpio_conf(UsartGPIOInitTable[i], UsartTxPINInitTable[i], MODE_AF, TYPE_PUSHPULL, SPEED_50MHz, PULLUP_UP, 7);
		i++;
	}
	i = 0;
	//RX
	while(UsartGPIOInitTable[i] != 0)
	{
		gpio_conf(UsartGPIOInitTable[i], UsartRxPINInitTable[i], MODE_AF, TYPE_PUSHPULL, SPEED_50MHz, PULLUP_NONE, 7);
		i++;
	}		
..........................
з.ы. специально так сделал - USARTов может в военное время быть до 6 и более
Реклама:
oleg110592 вне форума  
Непрочитано 06.04.2017, 20:13  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

oleg110592, это не cmsis, а говно какое-то, которое точно нельзя использовать. Разве что как define оформить, потому как static inline такого плана нафиг не сдалось!
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Непрочитано 06.04.2017, 20:56  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от eddy Посмотреть сообщение
которое точно нельзя использовать
ну тут каждый хозяин-барин, я вот вступил... для меня медом пахнет, если шо и поляк тоже, а он неплох, имхо, - реально в свое время его код помог разобраться с F429, SDRAM, ART Accelerator.
oleg110592 вне форума  
Непрочитано 06.04.2017, 22:07  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Действительно... кому как... Лично я пилял SDRAM и LTCD собственными силами, посему и не изобретал таблиц. И конфиг ТФТ-модуля выглядит вот так (на F746):
Нажмите, чтобы открыть спойлер

Код:
void LCD_TFT_Init(rgb888_t background_color)
{
	/* Тактирование интерфейсов */
	RCC-›AHB1ENR |= RCC_AHB1ENR_GPIOEEN | RCC_AHB1ENR_GPIOGEN | 	// PE, PG,
					RCC_AHB1ENR_GPIOIEN | RCC_AHB1ENR_GPIOJEN | 	// PI, PJ,
					RCC_AHB1ENR_GPIOKEN;							// PK

	RCC-›APB2ENR |= RCC_APB2ENR_LTDCEN;								// LTDC

	GPIOI-›MODER |= GPIO_MODER_MODER12_0;			// PI12: PP (стендбай/норм. дисплея)
	GPIOK-›OTYPER |= GPIO_OTYPER_OT_3;				// для подсветки дисплея PK3 OD
	GPIOK-›MODER |= GPIO_MODER_MODER3_0;			// PK3 Out

	/* Настройка портов под RGBHV интерфейс */
	GPIOE-›MODER |= GPIO_MODER_MODER4_1;			// PE4: AF PP
	GPIOE-›AFR[0] |= 0x0E ‹‹ (4*(4));				// PE4: AF14

	GPIOG-›MODER |= GPIO_MODER_MODER12_1;			// PG12: AF PP
	GPIOG-›AFR[1] |= 0x0E ‹‹ (4*(12-8));			// PG12: AF14

	GPIOI-›MODER |= 0xA1280004 ;					// PI9, PI10, PI14, PI15: AF PP
	GPIOI-›AFR[1] |=  0xEE000EE0;					// PI9, PI10, PI14, PI15: AF14

	GPIOJ-›MODER = 0xA8AAAAAA ;						// PJ0 - PJ15, кроме PJ12: AF PP
	GPIOJ-›AFR[0] = 0xEEEEEEEE;						// PJ0 - PJ7: AF14
	GPIOJ-›AFR[1] = 0xEEE0EEEE;						// PJ8 - PJ15, кроме PJ12: AF14

	GPIOK-›MODER |= 0x0000AA2A;						// PK0 - PK7, кроме PK3: AF PP
	GPIOK-›AFR[0] |= 0xEEEE0EEE;					// PK0 - PK7, кроме PK3: AF14

	/* Настройка синхронизации дисплея */
	LTDC-›SSCR = ((HSYNCW - 1) ‹‹ 16) | (VSYNCW - 1);				// ширина горизонт и верт синхроимпульса

	LTDC-›BPCR = ((HSYNCW + HBP - 1)‹‹16) | (VSYNCW + VBP - 1);		// Back Porch + синхроимпульс, гориз и верт

	LTDC-›AWCR = ((HACTW + HSYNCW + HBP - 1) ‹‹ 16 ) |				// Back Porch + синхроимпульс + активная ширина и высота
			     (VACTW + VSYNCW + VBP - 1);

	LTDC-›TWCR = ((HACTW + HSYNCW + HBP + HFP - 1) ‹‹ 16) |			// суммарная синхронизация, гориз и верт:
			     (VACTW + VSYNCW + VBP + VFP - 1);					// Back Porch + Front Porch + синхроимпульс + активная ширина и высота

	LTDC-›BCCR = (background_color.r ‹‹ 16) |		// цвет фона по умолчанию, в компонентах RGB888
				 (background_color.g ‹‹ 8) |
				 (background_color.b);
}


а весь драйвер (*.c) занимает чуть больше 250 строк текста, вместе со всеми комментами и межстрочными пробелами, и выглядит весьма компактно и читаемо.
NewWriter вне форума  
Непрочитано 07.04.2017, 07:31  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от NewWriter Посмотреть сообщение
SDRAM и LTCD собственными силами
нус сравним.
Опустим настройку портов, хотя, имхо, именно там строк польского текста меньше (уточним - практически три строки) и соответственно "выглядит весьма компактно и читаемо" (поляку наверное так было удобнее).
Идем дальше - начало настройки LTCD:
пан поляк:
Код:
	............................................
	/* Synchronization Size Configuration */
	LTDC-›SSCR 			= ((HSYNC - 1) ‹‹ 16) 	| (VSYNC - 1);
	/* Back Porch Configuration */
	LTDC-›BPCR 			= ((HBP - 1) ‹‹ 16) 	| (VBP - 1);
	............................................
господин NewWriter:
Код:
............................................
	/* Настройка синхронизации дисплея */
	LTDC-›SSCR = ((HSYNCW - 1) ‹‹ 16) | (VSYNCW - 1);			// ширина горизонт и верт синхроимпульса
	LTDC-›BPCR = ((HSYNCW + HBP - 1)‹‹16) | (VSYNCW + VBP - 1);		// Back Porch + синхроимпульс, гориз и верт
	............................................
по моему два практически одинаковых велосипеда, "пиляли" каждый собственными силами, придраться не к чему, кроме, конечно настройки портов, но быть изобретательным человеком - это хорошо, имхо.
з.ы. ушли от темы, длинномер пора заносить - предлагаю закончить осуждать поляка и вернутся к нашим коровам 0xDEADBEEF
oleg110592 вне форума  
Непрочитано 07.04.2017, 09:50  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Так вот как раз если вернуться к тем самым коровам, то вот именно с точки зрения МК, табличка является не лучшим вариантом работы. Что неудобно программисту, то удобно МК, и наоборот. Мало того, что перебор и чтение всех элементов таблицы занимает гораздо больше времени, и реализация получается по типу SPL или HAL, так еще и сама таблица занимает место. И хотя при объемах флеша в мегабайт лишняя сотня байт погоды не сделает, а 180 МГц скорости проглотят любую таблицу, но все равно, дело эстетики. И как я понял, по такому методу режимы работы всех выводов в таблице будет одинаковые.
Выводы таких модулей, как SDRAM вообще жестко фиксированы и другой альтернативы нет. Один раз написал и забыл. Ладно бы там еще LTDC, у него небольшие вариации по выводам, да и то помелочи - "либо сюда, либо туда".

В принципе, вопрос предпочтений - дело лично каждого. Лично я - против, мне не нравится. Кому нравится - пользуйтесь.

PS.
Сообщение от oleg110592 Посмотреть сообщение
строк польского текста меньше (уточним - практически три строки)
и если уж так придираться в мелочах, то вовсе не три строки. Это как в рекламе - "скидки до 70%", а если разобраться, то лишь на одну, никому и даром не нужную позицию товара ценой рублей 100.
так вот, если разобраться, то...
при записи напрямую, без выкрутасов, получается 11 строк чистого текста, ну плюс 5 строк для настройки скорости, если надо.
А у того поляка - как в рекламе - видим три строки цикла с вызовом функции, но "в уме" имеем еще энное количество строк под таблицу и еще столько же строк под тело функции, плюс заморочки с тем, чтобы эту функцию не забыть прописать везде, откуда она вызывается.
И выходит как раз как в рекламе - "скидка 70%" тянет за собой прицепом "а еще заплатите за доставку", и лишь получив заказанное, думаешь - а нафига оно было надо...
Ладно бы, я там понимаю, если у тебя там штук 5 разбросанных параллельных интерфейсов висит..

Последний раз редактировалось NewWriter; 07.04.2017 в 10:37.
NewWriter вне форума  
Непрочитано 07.04.2017, 10:56  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от NewWriter Посмотреть сообщение
если вернуться к тем самым коровам
SDRAM - всеж не та корова, вопрос был в конструкции типа
PHP код:
GPIOA-›AFR[1] |= (7 ‹‹ ((9-8)*4)) |        // PA9: AF7
                     (7 ‹‹ ((10-8)*4));        // PA10: AF7 
она хоть и есть в документации RM для F0 и в сниппетсах, но поначалу вводит в ступор (меня например). Разобравшись что это логика обычная - все равно вызывает кратковременное зависание мозга, могу делать ошибки. ТС тоже заакцентировал на этом внимание.
Кликать мышкой биты в калькуляторе тоже вводит меня в ступор, обязательно буду делать ошибки, видать такой склад недалекого умишки.
потому конструкция типа:
PHP код:
gpio_conf(GPIOInitTable[i], PINInitTable[i], MODE_AF, TYPE_PUSHPULL, SPEED_100MHz, PULLUP_NONE, AFInitTable[i]); 
где всего то надо заполнить табличку AFInitTable[i] обычными естественными значениями альтернативной функции вызвала мое одобрение и восхищение, о чем радостно поспешил сообщить на форуме. А тут просто получил ярлык - это г-но причем без пояснений почему же это оно. Памяти в моем проектике с USB хостом и Fatfs заняло около 24кБ (SPL из библиотеки повычищал), осталось памяти как гуталина, быстродействия тож хватает - точно не секунды порты настраиваются, глазом моргнуть не успеваю . Почему бы не пуркуа па?
oleg110592 вне форума  
Непрочитано 03.05.2017, 11:21  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Почему может не устанавливаться флаг RXNE у USART1 в STM32F407 при приеме байта?
В отладчике видно, что данные поступили правильно, но флаг RXNE не появляется. Если разрешить прерывание, то заход в обработчик прерывания от USART1 происходит. Но т. к. нет флага то и чтения регистра с данными в программе не происходит.
Инициализация USART1:
Код:
void STM32_UART_USART1_Init(void)
{

	//Настройка тактирования
	RCC-›AHB1ENR |=  RCC_AHB1ENR_GPIOAEN; //Тактирование GPIO
	RCC-›APB2ENR |= RCC_APB2ENR_USART1EN; //Тактирование модуля USART1
		

	//Настройка портов
	GPIOA-›AFR[1] |= 0x00000070 | 0x00000700; //Альтернативная функция
	GPIOA-›MODER |= GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1; //Режим работы
	GPIOA-›OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER_OSPEEDR10; //Скорость порта
	//GPIOA-›OTYPER |= //Тип порта когда он является выходом
	GPIOA-›PUPDR |= GPIO_PUPDR_PUPDR9_0 | GPIO_PUPDR_PUPDR10_0; //Подтяжка порта
	
	USART1-›CR1 |= USART_CR1_RE | USART_CR1_TE | USART_CR1_RXNEIE; //Разрешить прием, передачу и прерывание по приему
	USART1-›BRR = 0x000002D9; //Скорость передачи: 115200
	
	NVIC_SetPriority(USART1_IRQn, 0); //Установка приоритета
	NVIC_EnableIRQ(USART1_IRQn); //Разрешение прерывания
}
Что делать незнаю! Какие могут быть варианты?

Попробую попозже на USART2 перейти.
Миниатюры:
Нажмите на изображение для увеличения
Название: USART1.jpg
Просмотров: 0
Размер:	36.8 Кб
ID:	113805  
MikhailSh вне форума  
Непрочитано 03.05.2017, 11:55  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от MikhailSh Посмотреть сообщение
Что делать незнаю! Какие могут быть варианты?
бит UE не разглядел
USART1-›CR1 |= USART_CR1_UE;
oleg110592 вне форума  
Непрочитано 03.05.2017, 12:29  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Бит UE в отладчике в ручную пока ставлю, на картинке он установлен.
Так же на картинке видно, что в DR поступил байт, а RXNE нет.

Последний раз редактировалось MikhailSh; 03.05.2017 в 13:19.
MikhailSh вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stm32 HAL UART - не могу понять Ioann_II ARM 57 18.11.2016 16:10
Прием знаковых данных по I2C HAL STM32 dimdidim ARM 9 25.07.2016 22:35


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.