Прошёл приступ энтузиазма.
Я вышел на автора проекта с самого начала, но он не сразу отозвался, поэтому задал вопрос здесь. Потом он сказал, что доделает часы, но пропал. Вот на чем я остановился, встроенные часы реального времени и настройка энкодером. Температура не измеряется. Энкодер порт В GPIO_Pin_1|GPIO_Pin_10, кнопка энкодера порт В GPIO_Pin_11. Экран на spi, куда цеплять по коду понятно, я думаю, если кому-то интересно накидайте схемку.
GPIO_InitTypeDef gpio_sck_mosi =
{.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7, .GPIO_Speed = GPIO_Speed_50MHz, .GPIO_Mode = GPIO_Mode_AF_PP};
GPIO_InitTypeDef gpio_miso =
{.GPIO_Pin = GPIO_Pin_6, .GPIO_Speed = GPIO_Speed_50MHz, .GPIO_Mode = GPIO_Mode_IN_FLOATING};
GPIO_Init(GPIOA, &gpio_sck_mosi);
GPIO_Init(GPIOA, &gpio_miso);
GPIO_InitTypeDef gpio_dc =
{.GPIO_Pin = GPIO_Pin_4, .GPIO_Speed = GPIO_Speed_50MHz, .GPIO_Mode = GPIO_Mode_Out_PP};
GPIO_InitTypeDef gpio_ce =
{.GPIO_Pin = GPIO_Pin_2, .GPIO_Speed = GPIO_Speed_50MHz, .GPIO_Mode = GPIO_Mode_Out_PP};
GPIO_InitTypeDef gpio_rst =
{.GPIO_Pin = GPIO_Pin_3, .GPIO_Speed = GPIO_Speed_50MHz, .GPIO_Mode = GPIO_Mode_Out_PP};
GPIO_Init(GPIOA, &gpio_dc);
GPIO_Init(GPIOA, &gpio_ce);
GPIO_Init(GPIOA, &gpio_rst);
Тыкаете кнопкой по кругу меняется, что настраивается
enum {
hour,
min,
mouns,
day,
} clock_set;
крутите энкодер - тут же меняется время и оно сохраняется, часы дальше идут. По хорошему, нужно как-то выделить тот символ, что меняется. Пока в слепую тыкаете, а видите, что настраиваете, только когда крутите энкодер. Ну и температуру нужно добавить будет. Мне этот проект не интересен, поэтому приоритет у него низкий. Секунды сбрасываются в 0 при удержании кнопки энкодера более 2 сек.
Добавлено after 17 minutes 53 seconds:Убрал показание температуры до того момента, пока оно не будет починено. Как часы это уже работает...
видео