Это видео недоступно.
Сожалеем об этом.
RTC для STM32F103C8T6
HTML-код
- Опубликовано: 5 ноя 2016
- В этом видео рассказано о часах реального времени для stm32f103c8t6. Проект сделан с помощью stm32cubemx с использованием библиотек HAL в среде разработки Keil uVision. Часы тактируются часовым кварцем, находящимся на макетной плате, и запитаны от литиевой батарейки. Календарь в данном проекте не рассматривался, т.к., при отключении питания МК, дата не сохраняется. Разбираться пока нет необходимости. Если где напортачил, пишите в комментах. Так же, не стал делать полноценный интерфейс с кнопками для настройки. Не стал также тестировать будильник. Поскольку, не собираюсь делать из stm32 часы с будильником. За $6 можно купить полноценные часы с градусником в наборе для сборки и даже с корпусом. Что я и сделал, кстати. И даже работают, синие 7-сегментные индикаторы смотрятся неплохо. И ночью не бьют по глазам, т.к. тускнеют.
В общем, буду рад, если этот проект кому-нибудь поможет в освоении замечательных контроллеров серии STM32.
Ссылка на исходники проекта: drive.google.c...
Ссылка обновлена 1 ноября 2021 года.
Насчет переинициализации часов после сброса питания, обновитесь до последней версии куба Fireware Packet для F1 v 1.4.0 , есть обработка на уже записаные в RTC Backup data Register, если они там есть то время пойдет с последнего отключения питания. если нет тогда проинициализирует заного...
if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR1) != 0x32F2){
//set param data and clock
}
Но обращайте внимание на сгенерированный код!! там при указание значений переменных вместо 10-тичного формата сделали 16-ричный
Вообщем как всегда ST молодцы, пофиксили, и сразу натупили :)
Спасибо!Спасибо!Спасибо!Спасибо! я 4,5 часа мучался. почему? да как?!!! думал вообще плату (stm32f407vet6) выкину)).
я в этом новичок. ну и правда видео в инете куча а именно этого яб сказал самого главного нету.
ВАМ СПАСИБО!
Жду продолжения по STM32!
не бросайте канал. хоть мая запись спустя 2 года от последнего, может Вы еще будете выкладывать видео.
ВСЕХ ВАМ БЛАГ В ЖИЗНИ!!!
Если будете выкидывать, я дам адрес, куда выкинуть, или скажете, куда выкинете. Если недалеко, я заберу. :-)
Спасибо! Уроки просты и понятны) Ждем продолжений!
Вам спасибо. Никогда не задавался целью писать уроки. Просто видео для
ознакомления. Не ожидал, что возникнет такой интерес. Придется
продолжать. Теперь надо бриллиантовую кнопку зарабатывать. Если
серьезно, то канал пользователя narod stream и его сайт гораздо богаче
на обучение. Я и сам там немало полезного взял. :-)
какие-то странные видео про STM32 - никто не пишет самого главного,
LED PC13 по схеме стоит КАТОДОМ (минусом) к пину,
поэтому в настройках GPIO этого пина нужно назначить
открытый коллектор транзистора Output Open Drain
и GPIO Output Level выставить в HIGH,
иначе НИЧЕГО МОРГАТЬ НЕ БУДЕТ!
А зачем писать про очевидные вещи? Изучение макетной платы, обычно, начинается как раз с ознакомления с принципиальной схемой девайса.
Спасибо, интересно, пожалуй подпишусь и буду ждать видео про DS18B20.
получается в STM32F103C8T6 есть встроенные часы, только без батарейки, так дешевле, а модуль батарейки докупается отдельно, а насколько точные данные часы? например в ардуино помню было 2 модуля часов у китайцев, один ужасшнейший, на 3 сек. в сутки !!! плавал, а другой идеальный, со встроенным кварцем, сделал на ардуино на них много проектов, а на STM32 только начал, понял что в СИ ничего не знаю) и важнее всего уроки где на уровне чайников и негров объясняют основы SMT32 И СИ. Так помню модуль часов к ардуино стоил столько же как STM32F103C8T6 практически) 1:48 не понятно мне почему ногу задействовали под таймер, он что ногой топает) у него же внутри таймер должен быть наверное и без ног, а может к ноге что то будет подключаться) нуб нубом я) но кажется дохожу посмотрев 10 раз, там стоит noRTC output, а значит ножка не "вылазит", но включена, ну типа такая система там, ножка загорелась, значит включилось, при этом физически ножка noRTCoutput, вообщем чёрт ногу сломит разобраться там, но вроде что то удаётся выудить) Не удивлюсь если ваш урок единственный в ютубе, слишком мало для чайников уроков, наверное на пальце одной руки можно пересчитать, перерыл весь ютуб, там одни профессоры, да только что не спроси у них не ответят, как собаку прогонят или задают вопрос "деньги есть" "гони деньги" если хочешь совет. Вообщем с STM32 в отличие от ардуино полная беда, те уроки которые есть для заумных все, а для новичков комар носа не подточит куда забраться изучить азы на примерах. Да даже мигать светодиодом в ютубе вменяемо на кубе не найти больше 1-2 уроков. Целый пласт информации для чайников не раскрыт. А между прочим перейдя с ардуино многие скажут, да тут же никого не спросить. На форумах ардуино люди хоть и жадюги, но в сравнении с SMT32 ардуино щедрее щедрых, как хорошая школа без троечников, а в SMT32 гнобят новичка до земли. Настоящая дедовщина в STM32 в плане отсутствия уроков. Новичку невыносимо сложно. Доходит до того, что приходится приставать к таким пользователям каналов как ваш, которые даже на комментарий задавших им хоть однажды отвечают. Единственная соломинка в океане STM32 те, кто другим протянет руку, пусть и алюминиевым чайникам с дырками. Я вот всегда всем помогаю и в STM32 и в ардуино, таким же чайникам как я дырявым. 2:28 получается пин не задействуется, но для чего бывает его задействуют? часы ещё куда то что то могут передавать? для этого он нужен?
Ну да, единственный урок ваш нашёл, остальные уроки на ардуино под STM32 самые заумные каналы делают с десятками тысяч подписчиков, а по STM32 не знают как урок сделать на кубе и keil. Печалька.
Спасибо, конечно, но у меня не уроки. Я сам только отошел от НУПства, и то не полностью. :-) RTC тут не сильно точные. Но есть возможность калибровки. Если у МК полностью отобрать питание, оставив только батарейку для часов, то нет возможности использовать календарь. Хорошие уроки можно найти на narodstream.ru и на его же канале.
@@YuriyIY был там, там сложновато для нубов, да и автор сам большую часть не знает там информации, да и не помогает там ничем кроме штамповки уроков. Про MIDI он вообще не знает как его делать, а мне нужно именно миди, думал он профи, а он такой же как и все новичок, разве что только много умеет. Просто среди скудного в ютубе материала это считается "крутым каналом", но там почти ничего нет из того, что мог бы профессионал подсказать. Он сам не знает, да и не должен никому ничего объяснять, помочь там особо нечем на том канале, кроме как смотреть то что там есть, но мне как раз то что там есть для MIDI никак не относится, просил его рассмотреть тему MIDI, так он сказал что она вообще никому не интересна. Так и мне его канал не интересен ничем. Там одни профессоры, которые даже MIDI кнопку 1 не знают как прицепить. Пока бесполезнейший канал там, но да, ценный. И таких каналов больше нет. Наверное надо радоваться. Но меня огорчило что автор канала ничуть не смог сориентировать и подсказать, хоть мне и очень нравится канал и его автор, но у него есть большой пробел это MIDI тема. А пробелы он на канале просто пропускает идя дальше. А так я там есть конечно, но таким чайникам как я там сложно. Да и автор не спешит новые границы расширять знаний собственных. Так себе канал, сказал бы даже не общительный там канал. Вам там ответят если будет какая-либо выгода от ответа. Считаю это вовсе не канал даже, а так, ютуб бизнес у них, конвейер штампуют контента, по теме MIDI там за все годы ни слова не сказали. Это о многом говорит. Мне там польза есть конечно, но получше мог автор профессиональнее раскрутиться тем же MIDI. Но он далёк от этого. И не отрицает, что ему пофиг.
Юри подскажите при подключении батарейки у меня горит индикатор pwr. Без внешнего питания. И батарейка быстро садиться. У вас pwr не горит. Вы встречались с такими blue pill.?
Не, не попадались. Видимо, в вашем экземпляре, контакт Vbat соединён с VCC. Надо тщательно смотреть плату. Возможно, будет достаточно просто сдуть перемычку.
Молодец автор, очень полезные видео))
Благодарю. Если дальше еще будут проекты по этому камешку, обязательно буду делать видео.
Спасибос! Все бы так делились инфой.... лайк+++++ я только начал изучать stm-ки
Да какие проблемы. Чем богаты. Как разберусь, чем снимать, есть еще материалы.
Подскажите пожаулйста, наверное кроме вас никто и не знает) на "крутых" каналах вообще на ответят в жизни, делаю светодиод встроенный, мигает, а на ножку свой добавляю светодиод, мигает после того как гаснет на плате, инверсия какая то, HAL_GPIO_TogglePin, переводил вроде TogglePin и есть инверсия, так возник вопрос как всё таки мигать на ножке и встроенным светодиодом и на ножке одновременно, без инверсий, и в ответ в гугле и ютубе тишина, пугающая тишина.
Так его подключать надо правильно. Встроенный светодиод загорается, когда на ноге логический ноль, т.к. анодом он подключен к VCC. А ваш светодиод, видимо, анодом к ноге МК подключен. Вот и загорается, когда на ноге единица.
@@YuriyIY заработало) замигали одновременно 2 светодиода, спасибо большое! Действительно профессионал вы! Быстро и точно ответили. Подскажите, а реле мне как к STM32 подключить ардуиновское, там 3.3V а реле 5V, с реле нужно много работать. Да и те же сигналы 5V пускать нужно часто. А тут 3.3V первое на что наталкивается каждый открывая просторы STM32.
@@masterkit9517 Надеюсь, про сопротивление последовательно со светодиодом вы не забыли. Иначе, можно спалить МК. С реле ардуино сложнее. Надо читать даташит на реле, или смотреть схему. Реле непосредственно к МК подключать нельзя, Только через ключевой транзистор. Если транзистор уже есть на шилде, тогда без проблем. 5 вольтовые сигналы stm32 тоже в состоянии принимать по цифровым входам и выходам. Надо читать даташит к МК, там есть выводы, толерантные к 5В. На память не помню, к сожалению.
@@YuriyIY резистор вроде нужен только светодиоду, там 3.3в светодиоду вроде норм 3V
@@masterkit9517 Там не напряжение. Светодиодам ток важен.
Столько много слов о тупых уроках в интернете а со спринтом просто огород какой-то наворочен. Нельзя просто так сделать??? sprintf(str,"%02d:%02d:%02d",sTime.Hours,sTime.Minutes,sTime.Seconds); Как раз то и нужно было рассмотреть вопрос как быть с тем что дата не сохраняется ибо об этом мало кто до ума довел, а куда подключать батарейку это для даунов тема. Это так сложно ведь для батарейки отдельный пин есть...
И даже не претендую на истину в последней инстанции. Т.к., и stm32 и язык C для меня штуки новые и опыта очень немного выше нуля. Переделывать уже не буду, но на будущее приму к сведению, спасибо.
Если у вас все так получается с stm32, подскажите пжлст, у меня возник вопрос, можно ли RTC с секундн. прерьіванием использовать для запуска таймера TIM1 с ETR вх. для измерения частот сигналов???? А то использовать еще один таймер для генерирования 1с как-то жирновато, его можно задействовать для нужд например енкодера, а RTC без надобности простаивает.
Очень хорошо объясняете, запишите пару уроков для начинающий на данной плате + HAL +uKeil
Спасибо. По какой теме хотелось бы увидеть видео?
Есть смысл с самого нуля, например как сконфигурировать STM32F103C8T6 в CubeMX, сгенерировать код и в Keil помигать светодиодом. Может показаться глупостью, но на самом деле информации и тем более грамотно сформулированной очень мало для тех кто хочет начать разбираться в stm32. В основном каша, кто-то на stdperiph еще пытается примеры показывать, хотя это не актуально, кто как. А дальше уже как посчитаете нужным, мне была бы интересна тема использования ADC и вывода результатов на дисплей, там может и подключение nRF24l01 или смотрите сами, что посчитаете нужным. Мой уровень в stm32 это пока мигание светодиодом ))
Юрий Яремчук Спасибо )
уроки для начинающих с нуля, уже есть?.. я помигать свтодиодом не могу пока. хотел помигать РС13 светодиодом через установку бтов в регистры и что то не получиось(
Народ, как мне при каждом прерывании в файле "stm32f1xx_it.c" когда переменная увеличивается на 1 (i++) считывать ее значение в main.c в цикле while? Пишу в первом файле "extern int i", а компилятор пишет мол " Symbol i multiply defined (by stm32f1xx_it.o and main.o).". Как мне правильно експортировать переменную в мэйн?
Потому что, надо наоборот. В main.c пишешь int i;. В stm32f1xx_it.c уже говоришь, что переменная внешняя - extern int i;.
спасибо за видео! А как вы сделали так, чтобы маргался светодиод за каждую секунду(вместо с RTC)?
Функция RTC_IRQHandler в файле с прерываниями вызывается каждую секунду.
Похоже ,что это функция есть только в старых верциях cube. У меня сube V 1.5 и этой функции вообще нет .
@@ESEben10 Не могла она исчезнуть. Это же обработчик прерывания. Включите прерывания для RTC в кубе.
Я сейчас перед cube и не могу найти прерывание для RTC. Если вам не сложно, можете сказать в каком месте в cube вы это видете? Тут я вижу только RTC_Alarm_IRQHandler в файле обработки прерываний
@@ESEben10 Я давно делал это видео, точно уже не скажу. Скачайте исходники по ссылке в описании. Там есть и файл кубика.
How can i set the alarm for a special day in stm32f103 CubeMx doesnt show the Alarm Day of Week
I think this should be done only programmatically. Set an alarm for the time every day, and in the interrupt, check on which day the alarm needs to be triggered.
How we can use the stm32F1 in keil ? In my keil only use STM32L0 and F0
Please help me
No problem. Do you have installed STM32CubeMX? There you can generate a project for Keil uVision for any processor of the stm32 series. Keil have Pack Installer. It can install all the necessary libraries under a variety of different microcontrollers.
У меня на STM32F103C8T6 плата blue pill с али.При инициализации светодиод на плате загорается,который на пине PC13 .И не реагирует на HAL_GPIO_TogglePin . И ещё интересная проблема с RTC на этой плате была,часы отставали очень сильно.Пока не выпаял пины PC14 и PC15 из платы.Наверное они создавали помехи,влажность воздуха влияла.На второй плате RTC вообще не включается,пины тоже припаяны. А с датой я не понимаю, почему в HAL не сделали , чтобы мог рассчитывать из 32-х битного счётчика как это делается в unix time.Наверняка это коммерция,чтобы покупали f303 . Но есть примеры в сети где этот недостаток с датой обошли в f103 . Например github.com/dzanis/STM32/tree/master/rtc_time
Hi .. Thanks very much for shared your video , but I have a problem with the Date of RTC after power off or reset the microcontroller . THe issue is that information of Date ( Day/Month /Year ) is no update and return to 01/01/2000 . Do you have some idea for resolve this issue? thank you
I am using the same development board , by the away after reset or power off the Time (HH:MM:SS) is ok
ruclips.net/video/Y9Xxd3C1dvU/видео.html
But below there is a tip to upgrade libraries to the latest versions. There is a check for initialization RTC.
@@YuriyIY Hi could you show me Where is it the Tip to upgrade libraries .. Thanks in advance
@@nandoperu100 Run STM32CubeMX. Menu Help, Check for Updates. Lates version of libraries for f1 series is 1.7.0. Install it or update from previous versions. Good luck. :-)
отлично
Ваша переменная clkTime.Seconds она в 16 ричном формате, как вы ее переводите в десятичный ?
Исходники же есть, посмотрите. :-) Если не разберетесь, прокомментирую.
Юрий Яремчук хотелось бы увидеть видео о настройки среды IDE
Особых настроек IDE я и не делал. Там всего две глобальных настройки надо изменить, включить автодополнение после ввода трех символов, и юникод в настройках редактора. Чтоб можно было вводить русские комментарии. И одна настройка делается в каждом новом проекте. Это чтоб микроконтроллер ресетился после прошивки. И все.
Китай как всегда не гуд точности 0. добавил в результате ds1307 и кварц куплено все в чип. Иначе никак точности не добиться.
На самом деле, калибровка там есть. Но не вижу смысла делать часы на этом камушке. Там без основного питания календарь работать не сможет. Реально проще будет использовать внешние часы. Это точно.
Не можете подсказать в чем может быть проблема. Конфигурирую часы в кубе. генерирую. ничего не пишу. И мой основной код не работает. Дисплей некажет, светодиоды не мигают... Выключаю часы, переконфигурирую проект все работает....
Сложно гадать. Посмотреть бы на код нерабочего проекта.
Вобщем выяснил, что все ломается, когда подключаю внешний кварц на часы. с внутренним работает... Странности какие-то)
А часовой кварц хоть распаян на плате? :-) Не на всех платах стоят.
такая же проблема. кварц стоит
Привет а можешь рассказать про калибровку часов.У меня через LSI работает но часы бегут на 5 минут уже через 3 часа.А через LSE часы жестоко отстают - уже через 2 минуты после включения часы отстают на минуту.Какая то херня.Уже и со спиртом промывал и пропаивал нихера не получается
Спирт надо было вовнутрь употребить. :-) Если честно, я не разбирался в этом. Все равно, в C8T6 нельзя сохранять дату в бэкап регистрах. Только время идет. Про калибровку читал в даташитах. Но не делал пока.
Были похожие проблемы,пока не не выпаял пины PC14 и PC15 из платы .
Доброго времени суток, можете скинуть линк на документ по калибровке rtc?
Доброго дня. :-) К сожалению, от меня почему-то иногда сайт st.com не открывается. Поэтому не могу найти нужный вам документ. С чем это связано не могу сказать, или наш провайдер глючит, или великий китайский файрвол. Постараюсь не забыть и добавить ссылку в описание к видео.
+Привет не нашел у тебя калибровку.Можешь показать как это делал ты?
Когда будут новые видео?
Всё дело в том, что канал не задумывался как средство влоггинга или заработка денех. Я хотел тут показывать различные плюшки или триксы при работе с таким замечательным МК, как stm32. Т.к. это не является моей основной деятельностью, то видео появлялись по мере появления этих самых триксов. Но вот как раз сейчас есть мысль сделать некоторую гравицапу, для которой мне понадобилось разобраться с USART. И, если с передачей нет никаких хитростей, то прием, особенно когда неизвестна длина посылки, дело нетривиальное. Так что, есть мысль сделать видео по этому поводу. Думаю, оно будет полезно, т.к. в сети не нашел готовых решений для этого процесса. Перелопатив кучу информации, я нашел для себя несложный способ приема информации, которым и поделюсь в ближайшее время.
Please show me how to get time if turn off power supply!! I can not find it in your code. thank you
If you turn off the power, the microcontroller does not work. Work only RTC. After power-up, the microcontroller starts up and gets out of the RTC in the body of the program.
I dont understand how to read real time from backup register after power-up. Can you show me the function which perform it. thank you @Юрий Яремчук
main.c
HAL_RTC_GetTime(&hrtc, &clkTime, RTC_FORMAT_BCD);
Надо не только код читать, для решения проблемы с начальной инициализацией достаточно эти два закомментированные условия поместить в функцию чтения бэкап ячейки памяти куда в теле этой функции достаточно поместить число (признак того что RTC инициализирован). if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR1) != 0x32F2)
{ здесь инициализируем структуры даты и времени HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR1,0x32F2);
}. Вот в принципе и все что достаточно делать и не изобретать велосипед.
Юра мой тебе совет перед съемкой ролика напиши на листочек пункты о чем ты хочешь сказать. А то слишком сумбурно и слова паразиты...
Вторая часть да. Пока собрался ее делать, уже забыл, что было в первой части. Однако, писать листочки вряд ли когда буду. За это еще Л. И. Брежнева ругали. Пусть будет сумбурно, но живо. Ну и с меня блоггер еще тот, опыт наработаем, чо, Главное, людям интересно.
Ты не понял. Я не просил тебя читать по бумажке :) А только о плане или структуре ролика
можна дату зберігати в backup регістри, або взагалі не користуватись hal календарем і реалізувати сторонній stm32withoutfear.blogspot.com/2016/12/RTC-stm32f1xx.html?m=1
Да, спасибо. Статья довольно интересная.
Как бы...ну...там...нормальное видео
Помогло? :-)
@@YuriyIY , очень. Без шуток. Успехов!
@@alexanderurezchenko6651 Благодарю. Мысли еще есть. Жалко, что это направление пока отодвинулось.