-
- Посмотрите внимательнее. Под LPC автоматизировано, при выборе таргета определяется нужный дефайн. Под Stm32 я перешел на gcc, но вряд ли в iar для LPC и STM будут делать принципиально отличающиеся настройки проекта. - 3m(06.11.2013 21:52)
- по факту у меня есть проекты, где не одно и то же. Эти проекты работают на разных МК. Не принципиально разных типа F1 и F4, но например на F100 и F103, которые всё же много чем отличаются - koyodza(06.11.2013 21:49)
- Хм, оказывается, всё еще сложнее. А для каких целей Вам пришлось указывать разные процессоры в разных местах? Нельзя было, скажем, для старшего скомпилировать? - Леонид Иванович(06.11.2013 21:51)
- Нельзя. Ибо они очень разные по начинке! Поищите фразу #ifdef STM32F10 в файле stm32f10x.h и увидите - Keil(06.11.2013 22:27, )
- если в проекте указать 100, а не 103, то в кейле недоступна удобная отладка периферии. А стартап вообще доработанный получился, потому что некоторые вектора прерываний у них разные. Но на начальном этапе Вам это не нужно koyodza(38 знак., 06.11.2013 21:56)
- А где правильно настраивать тактирование, в файле стартапа или в своем исходнике? Меня смущает, что я не знаю, на каком генераторе сейчас работает процессор. - Леонид Иванович(06.11.2013 22:01)
- Можно накатать мигалку на 1 секунду расчетную, залить+запустить F8, замерять секундомером, провести обратный перерасчет... - Vit(06.11.2013 23:12)
- Уже понял, что без подключенного Леонид Иванович(1688 знак., 06.11.2013 23:45)
- Не мусор. Видна конкретная настройка. Просто примите как данность содержимое "system_stm32f10x.c" и не редактируйте его. Получите работоспособный проц с тактированием HSI. Почитайте "reference manual" и напишите код в начале main(), активирующий _keil(97 знак., 06.11.2013 23:54)
- Написал вот такое включение PLL: Леонид Иванович(1005 знак., 07.11.2013 01:03)
- Прикольно, если PLL тактирую от HSE когда вынимаю кварц - LED начинает мигать медленно. Вставляю обратно - снова мигает быстро. Кто это так делает? В софте ничего такого нет. Шайтан. - Леонид Иванович(07.11.2013 01:55)
- Во многих МК есть Clock Failure Monitor, переключающий тактирование на встроенный RC-генератор при потере внешнего клока. В dsPIC/PIC24 он активирован по умолчанию, а отключается либо программно, либо конфигурационным фузом. Про STM я не в курсе - MBedder(07.11.2013 03:13)
- Clock security system (CSS) его фамилие. plainuser(133 знак., 07.11.2013 13:06)
- Ну я же говорил - вон мужик в пиджаке, а вот дерево!(с) :)) - MBedder(07.11.2013 18:05)
- Clock security system (CSS) его фамилие. plainuser(133 знак., 07.11.2013 13:06)
- Во многих МК есть Clock Failure Monitor, переключающий тактирование на встроенный RC-генератор при потере внешнего клока. В dsPIC/PIC24 он активирован по умолчанию, а отключается либо программно, либо конфигурационным фузом. Про STM я не в курсе - MBedder(07.11.2013 03:13)
- Прикольно, если PLL тактирую от HSE когда вынимаю кварц - LED начинает мигать медленно. Вставляю обратно - снова мигает быстро. Кто это так делает? В софте ничего такого нет. Шайтан. - Леонид Иванович(07.11.2013 01:55)
- Написал вот такое включение PLL: Леонид Иванович(1005 знак., 07.11.2013 01:03)
- Я ж написал как выкинуть:) - Vit(06.11.2013 23:51, ссылка)
- там для разных МК. Большая часть из этого не компилируется для выбранного типа МК. Кое-что из того, что компилируется, но не используется, может не линковаться - koyodza(06.11.2013 23:47)
- Не мусор. Видна конкретная настройка. Просто примите как данность содержимое "system_stm32f10x.c" и не редактируйте его. Получите работоспособный проц с тактированием HSI. Почитайте "reference manual" и напишите код в начале main(), активирующий _keil(97 знак., 06.11.2013 23:54)
- Уже понял, что без подключенного Леонид Иванович(1688 знак., 06.11.2013 23:45)
- Если речь о stm32f100c4, то hsi 8 MHz. Нужно больше? Включите PLL. Почитайте официальный даташит, там описаны RCC->CFGR и RCC->CR - Keil(06.11.2013 22:36, )
- Два пути - писать свой init() или пользоваться API от st. Главное - не забывайте включать тактирование перед настройкой. Например, RCC->APB1ENR|=RCC_APB1ENR_PWREN; - Keil(06.11.2013 22:31, )
- это вопрос типа как надо делать: красиво или быстро. Каждый делает по-своему koyodza(1125 знак., 06.11.2013 22:08 - 22:15)
- А что делать при неудачном включении тактирования? - Леонид Иванович(07.11.2013 00:03)
- Уж точно не подключать внешний генератор и перешивать фьюзы! Достаточно ресет и убрать неудачный код. Снова получите голый HSI - _keil(07.11.2013 00:19)
- это от функционала прибора зависит. Если Вы о БП, то там можно работать от HSI на 8МГц и вообще не трогать тактирование. Для работы UART кварц не нужен, стабильности внутреннего генератора достаточно koyodza(136 знак., 07.11.2013 00:06)
- Если PLL тактировать от HSI, тогда, вроде, достаточно этого: Леонид Иванович(461 знак., 07.11.2013 01:35)
- Только я бы писал CFGR = (CFGR & ~CFGR_SW) | CFGR_SW_PLL; Так биты SW в регистре CFGR не будут кратковременно сброшены в 0. В данном случае это ничем не грозит, но вообще говоря может стать источником проблемы. - йцукен(07.11.2013 20:22, )
- Можно подробнее, почему в этом случае не грозит, и в других случаях будут проблемы? - Леонид Иванович(07.11.2013 22:44)
- Ну представьте, что вы собирались перейти с HSE на PLL, при этом первой строчкой временно перешли на HSI, а он выключен. Тогда ядро остановится, и до второй строчки дело не дойдёт. В данном случае это мнимая угроза, потому что, если я правильно йцукен(268 знак., 08.11.2013 13:13, )
- В кратковременном переключении на HSI ничего страшного не вижу. Но если Вы решите выполнить полный код более одного раза, возникнет коллизия - PLL уже используется, а Вы принудительно ей пытаетесь поменять множитель. Пусть и кратковременно. - _keil(08.11.2013 05:00)
- Можно подробнее, почему в этом случае не грозит, и в других случаях будут проблемы? - Леонид Иванович(07.11.2013 22:44)
- Понимаю while(77){} - оно специально для посмеяться при чтении, а вот (xxx == 0) под while ненавижу - Vit(07.11.2013 01:52)
- (xxx == 0) гораздо нагляднее, чем (!xxx), хоть и длиннее. - Леонид Иванович(07.11.2013 02:14)
- Это не C# с жесткой типизацией. Никак не нагляднее - просто выпендрёж, но заставляет сломать моск к концу чтения. Ничего личного. Vit(328 знак., 07.11.2013 08:50 - 09:06)
- Никогда не напишу a.b = !!(xxx);, ибо if(xxx) a.b = 1; else a.b = 0; наглядней. Первое - действительно выпендрёжь. - Леонид Иванович(07.11.2013 12:50)
- Для таких вещей можно использовать тернарную условную операцию Ruslan(27 знак., 07.11.2013 16:16)
- Часто использую. Хотя if читабельней. - Леонид Иванович(07.11.2013 16:23)
- false == 0. while((x&y)==false){} это песец моску. конструкция, вызывающая рвотный рефлекс - Vit(07.11.2013 15:32)
- Для таких вещей можно использовать тернарную условную операцию Ruslan(27 знак., 07.11.2013 16:16)
- Никогда не напишу a.b = !!(xxx);, ибо if(xxx) a.b = 1; else a.b = 0; наглядней. Первое - действительно выпендрёжь. - Леонид Иванович(07.11.2013 12:50)
- Это не C# с жесткой типизацией. Никак не нагляднее - просто выпендрёж, но заставляет сломать моск к концу чтения. Ничего личного. Vit(328 знак., 07.11.2013 08:50 - 09:06)
- (xxx == 0) гораздо нагляднее, чем (!xxx), хоть и длиннее. - Леонид Иванович(07.11.2013 02:14)
- Только я бы писал CFGR = (CFGR & ~CFGR_SW) | CFGR_SW_PLL; Так биты SW в регистре CFGR не будут кратковременно сброшены в 0. В данном случае это ничем не грозит, но вообще говоря может стать источником проблемы. - йцукен(07.11.2013 20:22, )
- Если PLL тактировать от HSI, тогда, вроде, достаточно этого: Леонид Иванович(461 знак., 07.11.2013 01:35)
- А что делать при неудачном включении тактирования? - Леонид Иванович(07.11.2013 00:03)
- Можно накатать мигалку на 1 секунду расчетную, залить+запустить F8, замерять секундомером, провести обратный перерасчет... - Vit(06.11.2013 23:12)
- А где правильно настраивать тактирование, в файле стартапа или в своем исходнике? Меня смущает, что я не знаю, на каком генераторе сейчас работает процессор. - Леонид Иванович(06.11.2013 22:01)
- Хм, оказывается, всё еще сложнее. А для каких целей Вам пришлось указывать разные процессоры в разных местах? Нельзя было, скажем, для старшего скомпилировать? - Леонид Иванович(06.11.2013 21:51)