Заливаю прошивку через Keil 5.26 - если через Strl+F5 (старт отладки) то всё работает, но самостоятельно после ресета не стартует, заливка через ST-LINK Utility - заливается но не стартует!
void _delay_us(uint16_t us) { ////////////////////////////////////////////////////////////////////////////////////////////// uint32_t period = 0; if (0x00 == us) return; period = ((F_CPU/5733333)*us)-6; //подобранные коэфициенты в ѕротеусе дл¤ STM32F103C6 72м√ц ¤дро, 50м√ц порт for (unsigned int q = 0; q <= period; q++){} ////////////////////////////////////////////////////////////////////////////////////////////// }
Разве это AVR? Вот первых частота может быть изменена во время работы программы и нужно использовать SystemCoreClock перед этим вызвать SystemCoreClockUpdate();. Во вторых, такая задержка будет неточной. В STM32F105 есть DWT.
Зачем дублировать настройку прерываний? Типа что-то да сработает?
Цитата:
Код:
void bibip (uint32_t time_ms, uint32_t freq_hz) //пишание пьезодинамиком на PA1 (врем¤ в милисекундах, частота а √ерцах) { ////////////////////////////////////////////////////////////// uint32_t cycles = 0; uint32_t period = 0; period = F_CPU / (12 * freq_hz); //12- подобранный коэфициент в ѕротеусе дл¤ STM32F103C6 72м√ц ¤дро, 50м√ц порт cycles = (5960 * time_ms)/period; //5960 - подобранный коэфициент в ѕротеусе дл¤ дл¤ STM32F103C6 72м√ц ¤дро, 50м√ц порт for (uint32_t i =0; i <= cycles; i++) { GPIO_SetBits(GPIOC, GPIO_Pin_13); //высокий уровень for (uint32_t q = 0; q <= period; q++){asm("nop");} GPIO_ResetBits(GPIOC, GPIO_Pin_13); //низкий уровень for (uint32_t q = 0; q <= period; q++){asm("nop");} } /////////////////////////////////////////////////////////////// }
Есть же ШИМ, но нет, нужно все сделать программно. Изучение AVR пошло во вред, а не на пользу.
Теперь о том где виснет. Может повиснуть например здесь.
Код:
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {} /* Ждем пока PLL будет готов */ RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK); /* Переключаем системное тактирование на PLL */ while (RCC_GetSYSCLKSource() != 0x08) {} /* Ждем пока переключитьс¤ */ } else /* Проблемы с HSE. Тут можно написать свой код, если надо что-то делать когда микроконтроллер не смог перейти на работу с внешним кварцом */ {
while (1) {} /* Пока тут заглушка - вечный цикл*/ }
Запускаете программу без отладчика, а потом во время работы подключаете отладчик например как написано здесь и выясняете где виснет.
Последний раз редактировалось Мурик Пн дек 17, 2018 21:04:47, всего редактировалось 2 раз(а).
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Соединение BOOT0 с землёй даже вообще без резистора проблему не решает.
Я думаю, писатели библиотек проверяют свой код не во всех возможных настройках разных версий компиляторов, а только на тех что по умолчанию ( "Oz image size" - это по умолчанию), и возможно только на компиляторе v5, отсюда такие чудеса!
проблема осталась - включение уровня оптимизации "O0" (фактически отключенная оптимизация) вместо "Oz image size" (которая по умолчанию) в компиляторе v6 делает невозможной запуск прошивки из флэша кроме как из под отладчика.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения