-
Постов
57 -
Зарегистрирован
-
Посещение
Репутация
1 ОбычныйИнформация о Dvorkin
- Сейчас Просмотр темы: STM32L1 ADC + DMA
-
Звание
Участник
Контакты
-
ICQ
Array
Информация
-
Город
Array
Посетители профиля
1 732 просмотра профиля
-
Имелась в виду инициализация MX_RTC_Init(), сгенерированная CubeIDE. Все понятно, я в религиозных войнах не участвую.
-
Обнуление даты и времени программист заметит сразу же. Да, установку даты и времени в MX_RTC_Init() легко обойти. А вот это очень спорно. В MX_RTC_Init() инициализируются, в частности, hrtc.Instance и hrtc.TampOffset. Так что правильный ответ - написать свою инициализацию RTC, а штатную - выкинуть. И с чем же там разобрались? Разве что с благоглупостями типа калибровать часовой кварц от HSE.
-
Все так. Но генерируемый CubeIDE код инициализации ничего не проверяет. И я не знаю, как сделано у топикстартера. Калибровку RTC я делал так: Компьютер, синхронизирующий системное время по NTP, устанавливает точное время в контроллере и включает режим калибровки. Дней через 5 компьютер запрашивает текущее время контроллера и вычисляет калибровочный коэффициент. Режим калибровки останавливается. В память контроллера записывается история калибровки - когда началась и когда закончена, отклонение времени и калибровочный коэффициент. Разумеется, во время калибровки установка времени в контроллере запрещена. Я тогда работал с MSP430, там нет счетчика субсекунд, поэтому установка времени в начале калибровки и чтение времени в конце делалось на границе секунды в компьютере.
-
Такая неточность часов, как у топикстартера, возможна по по причине тактирования не от LSE, а от LSI. Но вот что еще есть: вызов RTC_Init() при инициализации в main() портит счетчик субсекунд. Так что можно испортить показания часов просто нажимая RESET. Выход - не инициализировать RTC без необходимости.
-
Осреднение
Dvorkin ответил whale тема в Программирование
Зачем вы на каждой итерации проверяете флаг? Быстрее будет if(Flag_3x3) {for() } -
Как компилятор ищет заголовочные файлы?
Dvorkin ответил juvf тема в Программирование
На сайте https://elixir.bootlin.com/linux/v4.14/source выбираете версию ядра и ищете timeval (в поле поиска Search Identifier). Или открываете файл mxc.c и, кликнув по #include "time.h", медитируете до просветления. -
"break to out" from for/switch
Dvorkin ответил sunjob тема в Программирование
Ну, если за год никто не предложил разумного решения - значит, задача чрезвычайно трудна, нельзя было оставить без ответа 😀 -
"break to out" from for/switch
Dvorkin ответил sunjob тема в Программирование
Здесь или goto или ввести булевский флаг выхода из цикла: bool fl_exit=false; for(int i=0; (i<N) && !fl_exit; i++) {switch(i) {case 0: break; case 1: break; case 10: fl_exit=true; break; }//switch }//for -
Да книжек-то много, кому какая нравится... Посмотри в истории браузера, за месяц история ссылок должна же остаться.
-
Модули и так грузятся вместе с ядром, т.к. они часть ядра. А скрипты /etc/rcS уже потом. Вроде в /lib/modules есть modules.order, он и определяет порядок загрузки модулей. Но в разных ОС может быть по-другому, конечно.
-
Можно писать в fifo, а под screen в именованной сессии (screen -mdUS my_log) запустить скрипт, который печатает прочитанное из fifo, что-то наподобие: tail < fifo Тогда, переключившись в эту сессию (screen -rdU my_log), можно читать ваш лог.
-
Да, в Zynq нет ресурсов, а драйвер на компе должен же знать.
-
В device tree описываются устройства, которые обслуживают драйвера ОС. И неважно, где эти устройства, ведь у каждого есть адрес и прочие ресурсы.
-
Так я не делал, ничего сказать не могу. Xilinx SDK генерил не совсем правильно dt, а с деревом от petalinux проблем никогда не было.