Top.Mail.Ru
Уведомления
Очистить все

[Закреплено] STM32 для начинающих

Страница 2 / 23
Aveal MT
(@aveal)
Top level Admin

@aleksej-6 Отлично! Рад, что все получилось )


ОтветитьЦитата
Создатель темы Размещено : 13.07.2022 14:15
(@nozyl)
Level 1

Доброго времени суток, решил перейти с arduino на stm32, и первое за что взялся сделать банальные часы.
Включил тактирование RTC, поставил вашу библиотеку segment_lcd. и пытаюсь вывести цифры часов:

HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);
char str[DIGITS_NUM];
snprintf(str, DIGITS_NUM, "%d%d", sTime.Minutes, sTime.Seconds );
SEG_LCD_WriteString(str);

Проблема в том что sTime.Seconds имеет вид 1 2 3 4 (вместо 01 02 03 04) из за чего становился проблематично выводить их на прямую.
К тому же я не совсем понимаю как работает SEG_LCD_WriteString. Посоветуйте пожалуйста как привести строку к нужному виду, спасибо.


ОтветитьЦитата
Размещено : 16.08.2022 08:31
Aveal MT
(@aveal)
Top level Admin

@nozyl доброго! Вот набросал, дисплея нет под рукой проверить, но думаю, все нормально будет:

HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);

char str[DIGITS_NUM + 2];
snprintf(str, DIGITS_NUM + 2, "%02d.%02d", sTime.Minutes, sTime.Seconds);

ОтветитьЦитата
Создатель темы Размещено : 16.08.2022 10:50
(@nozyl)
Level 1

@aveal Большое спасибо, работает.
%02d означает "форматировать целое число с двумя цифрами, оставляя его заполнением нулями"
я этого не знал, теперь осталась прикрепить кнопку для настройки часов. Опять же воспользуюсь вашей библиотекой button.


ОтветитьЦитата
Размещено : 16.08.2022 11:09
Aveal MT
(@aveal)
Top level Admin

@nozyl button уже не моя, с сообщества ) Но там все четко, должно работать. Если что пиши, разберемся с проблемами 👍 


ОтветитьЦитата
Создатель темы Размещено : 16.08.2022 11:16
(@nozyl)
Level 1

Прикрепил кнопку вот таким образом, думаю что так не делать правильно, но она работает 😀. Не могу разобраться как в библиотеке segment_lcd заставить точку мигать.

if (BUTTON_GetAction(BUTTON_SETTINGS) == BUTTON_SHORT_PRESS)
{
	sTime.Seconds++;
	if(