Энкодер на stm32f405 для новичка

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Мудрый кот
Сообщения: 1758
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

linux_rulezz писал(а): Пт июл 03, 2026 01:34:35в мышах на среднюю кнопку, которую нажимаешь куда чаще правой, ставят самый дешёвый микрик! Я уже пару десятков мышей выкинул, у которых отказала эта важная для любой работы кнопка!
Давно известно: Скупой платит дважды.
Вместо того, чтобы купить нормальную мышу, можно конечно "экономить" и покупать их десятками.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди террористов

Сообщение linux_rulezz »

"Нормальную" - это какую? Я покупаю по 100-150 рублей, вполне себе нормальные…
Windows must die!
Контактная информация:
Реклама
Мудрый кот
Сообщения: 1758
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

linux_rulezz писал(а): Пт июл 03, 2026 09:34:36Я покупаю по 100-150 рублей
Вот именно! :)))
О чём я и говорил.

PS: На заметку "экономистам": Дешманские ещё и гораздо быстрее выжирают батарейки. Делая "выгоду" от "экономии" ещё более сомнительной.
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди террористов

Сообщение linux_rulezz »

jcxz писал(а): Пт июл 03, 2026 09:36:11гораздо быстрее выжирают батарейки
Какие еще батарейки? Зачем мыше батарейки, если она от USB питается?
Windows must die!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Сообщения: 1758
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

linux_rulezz писал(а): Пт июл 03, 2026 10:05:06Какие еще батарейки? Зачем мыше батарейки, если она от USB питается?
Ужас! :facepalm: Не думал что маразм "экономия" зашла так далеко. :dont_know:

Может у вас они (мыши) ещё и шариковые??? :)))
Слышали когда-нить об оптических мышах?
Реклама
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди террористов

Сообщение linux_rulezz »

"Шариковые" сейчас найти сложно. Приходится убогие "оптические" покупать…
Windows must die!
Контактная информация:
Реклама
Встал на лапы
Сообщения: 143
Зарегистрирован: Пт май 20, 2022 22:19:02
Откуда: Ижевск

Сообщение Ифторик »

Пытаюсь сейчас файлы с CD карты прочитать с помощью библиотеки fatfs через интерфейс CDIO, никак не могу понять в чем проблема, получилось только узнать размер файлов и общий объем флешки, а текст никак не хочет отображаться, я понял если была бы балиберда из разных символов - значит кодировка/распознавание символов не верное, но имена все одинаковые, почему?
Если с счетчиком(энкодером) я могу делать грязь на регистрах, то плешка слишком мудреная со своими 512 битами, не хочется залезать совсем глубоко в битовую передачу.

Код в майне (сократил, чтоб не было громоздко)

Код: Выделить всё

HAL_SD_CardInfoTypeDef CDinfo; //инициализация структуры
HAL_SD_GetCardInfo(&hsd, &CDinfo); //получаем системную информацию
snprintf(iClass, sizeof(iClass)+6, "Class-%lu", CDinfo.Class);	//конвертируем CDinfo.Class в массив символов iClass[64]
str_dot_out(310, 130, iClass, strlen(iClass), 0, 1, SystemFont); //выводим на экран iClass[64]
f_mount(&SDFatFS, (TCHAR const*)SDPath, 1); //монтируем диск
List_Files(""); //получаем список файлов

функция получения списка файлов:
Спойлер

Код: Выделить всё

FRESULT List_Files(const char* path) {
 FRESULT res;
 DIR dir;
 static FILINFO fno;
 res = f_opendir(&dir, path);
 int loc = 0; //приращение расположения на экране
 char fileNameCDi[256]; //имя файла
 char fileSizeCDi[256]; //размер файла
 char errorCDi[8]; //ошибка чтения - если ноль, то ошибки нет
 if (res == FR_OK)
 {
	while (f_readdir(&dir, &fno) == FR_OK & fno.fname[0] != 0)
	{
		HAL_Delay (100);
		if (fno.fattrib & AM_DIR) //папка
		{
			snprintf(fileNameCDi, sizeof(fileNameCDi), "DIR-%hu", fno.fname); //конвертируем fno.fname в массив символов fileNameCDi
			str_dot_out(10, 70+loc, fileNameCDi, strlen(fileNameCDi), 0, 0, SystemFont); //выводим на экран
		}
		else //файл
		{
			snprintf(fileSizeCDi, sizeof(fileSizeCDi), "File-%lu;_%lubyte", fno.fname, fno.fsize);
			str_dot_out(10, 70+loc, fileSizeCDi, strlen(fileSizeCDi), 0, 0, SystemFont); //выводим на экран
		}
		loc = loc+20; //шаг расположения
		}
		str_dot_out(10, 70+loc, "end", 3, 0, 0, SystemFont); //список закончился, выводим на экран end
		f_closedir(&dir);
	}
	snprintf(errorCDi, sizeof(errorCDi), "error_%lu", res); 
	str_dot_out(10, 50, errorCDi, sizeof(errorCDi), 0, 0, SystemFont); //выводим на экран ошибку
	return res;
 }
Вложения
SD to LCD.jpg
(69.61 КБ) 2 скачивания
Встал на лапы
Сообщения: 143
Зарегистрирован: Пт май 20, 2022 22:19:02
Откуда: Ижевск

Сообщение Ифторик »

Я разобрался, fno.fname записывается символами по 16 бит, а для вывода на экран нужен восьмибитный char
Вместо команды snprintf я ввел так:

Код: Выделить всё

for (int i = 0; i < 32; i++)
{
fileNameCDi[i] = (char)fno.fname[i];
}
snprintf
я думал что так тоже можно записать:

Код: Выделить всё

fileNameCDi[i] = fno.fname[i];
типа старшие биты удалятся, младшие останутся, ну логично же.
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Ифторик писал(а): Вт июл 07, 2026 19:36:13 я думал что так тоже можно записать:

Код: Выделить всё

fileNameCDi[i] = fno.fname[i];
типа старшие биты удалятся, младшие останутся, ну логично же.
Неявное приведение типов - плохая практика. Где-то оно отработает корректно, а где-то (и это чаще всего) доставит массу проблем. Кроме того, такая запись предполагает, что типы одинаковы, то есть, в Вашем случае стало плохо читаться, так как требуется дополнительная информация об их неравенстве. В общем, так делать нельзя.
Встал на лапы
Сообщения: 143
Зарегистрирован: Пт май 20, 2022 22:19:02
Откуда: Ижевск

Сообщение Ифторик »

Я использовал фукцию snprintf чтоб превратить обычную переменную в массив данных char для вывода на дисплей, но похоже тут опять никакой магии я не нашел, я же конечно не явно прировнял два массива, а через эту функцию.
В топку закинул и думал что оно само там разберется))
Вымогатель припоя
Сообщения: 620
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Помогаю пользоваться ИИ-ботом, по четвергам - бесплатно

Изображение

Так что Линукс Эдуардович отчасти был прав!
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Rapra писал(а): Чт июл 09, 2026 14:04:02 Так что Линукс Эдуардович отчасти был прав!
В помойку Линукса Эдуардовича. Не думаю, что форумы создавались для подобного поведения.
Мудрый кот
Сообщения: 1758
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Ифторик писал(а): Вт июл 07, 2026 19:36:13Вместо команды snprintf я ввел так:

Код: Выделить всё

for (int i = 0; i < 32; i++)
{
fileNameCDi[i] = (char)fno.fname[i];
}
snprintf
Это говнокод. Так делать нельзя.

Если нужны имена файлов в однобайтовом (ASCII) режиме, то следует просто перевести FatFS в режим ASCII. Вместо Unicode. FatFS всё умеет.
Встал на лапы
Сообщения: 143
Зарегистрирован: Пт май 20, 2022 22:19:02
Откуда: Ижевск

Сообщение Ифторик »

Да, я понимаю, читать все символы через эту шляпу...(Я ж на одном списке файлов не остановлюсь), но просто если переткнуть настройки на ASCII не вдаваясь в подробности, то выпадает куча ошибок, пока не понял из-за чего и даже ошибки не читал, надо поковырять в эту сторону как время будет
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди террористов

Сообщение linux_rulezz »

Ифторик писал(а): Пт июл 10, 2026 09:38:32пока не понял из-за чего
Копипастишь, небось, в хрюникоде?
// Запретил бы нафиг все кодировки, выходящие за пределы семи бит!
Windows must die!
Контактная информация:
Встал на лапы
Сообщения: 143
Зарегистрирован: Пт май 20, 2022 22:19:02
Откуда: Ижевск

Сообщение Ифторик »

Гугл неплохо справляется с написанием кода, но я стараюсь так не делать, я не ИИ тренерую, а себя же, а то что юникод я поменять не могу, это из-за того что в кубеМХ проект генерирую по модулям, потом каждый модуль отдельно вставляю себе, вот и ломаются иногда системные библиотеки, очень мерзенькие эти ошибки, по этому я их не смотрел, уже сталкивался, надо генерировать fatfs с нужными мне настройками сразу
Вымогатель припоя
Сообщения: 620
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

linux_rulezz писал(а): Пт июл 10, 2026 12:03:45 // Запретил бы нафиг все кодировки, выходящие за пределы семи бит!
i ostanemsa my bez russkih bukv, potomu chto v 128 kodov russkie bukvy ne pomeschajutsa
Ответить

Вернуться в «ARM»