-
- По ссылке нашел такой текст (это правда?): Леонид Иванович(06.11.2013 23:10, ссылка)
- Тогда ИАР вообще идет боком.После слов ...С момента выхода версии IAR EWARM 6.2 в среду разработки включены собственные библиотеки CMSIS (файлы core_cm3). Это нововведение обосновывают улучшением оптимизации кода. При загрузке проектов, plainuser(214 знак., 07.11.2013 13:16)
- свои библиотеки отключаются ловким движением одного пальца - Vladimir Ljaschko(07.11.2013 14:08)
- iar возомнил себя выше st? 3.14пец! Forget IAR, use Keil! - _keil(07.11.2013 13:21)
- гцц рулез :) - RED_DRAGON(07.11.2013 15:52)
- Makefile для make рисовать notepad'ом ? - _keil(07.11.2013 16:25)
- Карандашом на бумаге печатными буквами. Потом отсканировать и распознать. И так три раза: для закрепления выученного материала. - SciFi(07.11.2013 16:29)
- Тогда лучше фотошоп+финеридер. При таких раскладах нафик такой фреймворк. Слишком дорого в обслуживании это бесплатное решение. Пусть остается в своей среде. - _keil(07.11.2013 16:45)
- Учить что-то новое всегда дорого - спросите у ЛИ, сколько нервов ему это стоит. И не факт, что пригодится: всё то же самое можно сделать на
AVRколенке. - SciFi(07.11.2013 16:49)- У меня нервный срыв, и виновник его - STM32. Простите, пожалуйста. - Леонид Иванович(07.11.2013 22:39)
- Прощаю :-) - SciFi(07.11.2013 22:41)
- Есть вариант с небольшим количеством конфигурационных регистров. См. сцылко - _keil(07.11.2013 16:54, ссылка)
- У меня нервный срыв, и виновник его - STM32. Простите, пожалуйста. - Леонид Иванович(07.11.2013 22:39)
- Учить что-то новое всегда дорого - спросите у ЛИ, сколько нервов ему это стоит. И не факт, что пригодится: всё то же самое можно сделать на
- Тогда лучше фотошоп+финеридер. При таких раскладах нафик такой фреймворк. Слишком дорого в обслуживании это бесплатное решение. Пусть остается в своей среде. - _keil(07.11.2013 16:45)
- Карандашом на бумаге печатными буквами. Потом отсканировать и распознать. И так три раза: для закрепления выученного материала. - SciFi(07.11.2013 16:29)
- Makefile для make рисовать notepad'ом ? - _keil(07.11.2013 16:25)
- гцц рулез :) - RED_DRAGON(07.11.2013 15:52)
- И да и нет. На моё IHMO лучше учить "reference manual", чем standard_peripheral_library - _keil(06.11.2013 23:17)
- standard_peripheral_library я сразу выкинул, на изучение всего этого меня не хватит. - Леонид Иванович(06.11.2013 23:39)
- это всё равно как Вы бы сказали "не нужны мне учебники по физике, сам во всём разберусь и свои формулы выведу" - koyodza(06.11.2013 23:42)
- зря. Изучать сразу всё там не нужно. А для вхождения в тему этот путь значительно легче. Потом по мере необходимости можно отказываться от некоторых вещей в пользу своих - koyodza(06.11.2013 23:41)
- Начал разбираться с GPIO, ничего не понял. А когда почитал даташит, все биты в регистрах понятны. - Леонид Иванович(06.11.2013 23:46)
- GPIO - просто песня, можно в стиле in и out, можно (и нужно) GPIO_BSRR_BR1 и GPIO_BRR_BR1. Когда почувствуете, ещё будете удивляться как Вы жили без BSRR и BRR - _keil(07.11.2013 00:14)
- А в чем смысл BRR, если BSRR может как устанавливать, так и сбрасывать? - Леонид Иванович(07.11.2013 01:08)
- на СМ3 и СМ4 можно через bit bang, это ещё лучше koyodza(196 знак., 07.11.2013 00:27)
- Не на всех CM3/4 это работает. STM32F3, например. - AD(07.11.2013 14:25)
- само собой. Тут речь про F1 - koyodza(07.11.2013 14:29)
- А чем лучше через bit bang? - Леонид Иванович(07.11.2013 01:09)
- вместо записи маски используется запись по адресу. Удобнее, если пины могут быть переконфигурированы в процессе работы программы: просто храните указатель на 32-битное слово, которое отвечает за состояние отдельного пина koyodza(283 знак., 07.11.2013 01:18)
- Альтернатива -
макросinline-функция#define - если решили назначить сигнал другому пину, просто указали новую маску в тот же или другой порт - _keil(07.11.2013 09:02)- Вы не поняли: у Вас адрес порта и маска (два параметра), у меня один адрес. Пока всё задано define большой разницы нет (хотя на самом деле небольшая разница есть в получаемом коде), но когда Вам понадобится в процессе работы программы koyodza(282 знак., 07.11.2013 14:05 - 14:08)
- Я делаю шаблонный класс, где параметрами будут порт и пин. - Леонид Иванович(07.11.2013 12:40)
- Рабочий вариант, но call и ret требуют ненулевого cpu time. Как минимум push/pop. Может случиться что эта задержка ограничит желаемую скорость ногодрыганья. Дело Ваше, я предпочту #define set GPIOB->BSRR=GPIO_BSRR_BR1; #define reset GPIOB->BRR _keil(115 знак., 07.11.2013 13:13)
- Какие call и ret? Функции, определённые в теле класса инлайнятся без каких-либо накладных расходов. - =AlexD=(08.11.2013 11:40)
- Рабочий вариант, но call и ret требуют ненулевого cpu time. Как минимум push/pop. Может случиться что эта задержка ограничит желаемую скорость ногодрыганья. Дело Ваше, я предпочту #define set GPIOB->BSRR=GPIO_BSRR_BR1; #define reset GPIOB->BRR _keil(115 знак., 07.11.2013 13:13)
- Альтернатива -
- вместо записи маски используется запись по адресу. Удобнее, если пины могут быть переконфигурированы в процессе работы программы: просто храните указатель на 32-битное слово, которое отвечает за состояние отдельного пина koyodza(283 знак., 07.11.2013 01:18)
- Не на всех CM3/4 это работает. STM32F3, например. - AD(07.11.2013 14:25)
- это GPIO, дальше будет наоборот :=) - koyodza(06.11.2013 23:48)
- GPIO - просто песня, можно в стиле in и out, можно (и нужно) GPIO_BSRR_BR1 и GPIO_BRR_BR1. Когда почувствуете, ещё будете удивляться как Вы жили без BSRR и BRR - _keil(07.11.2013 00:14)
- Начал разбираться с GPIO, ничего не понял. А когда почитал даташит, все биты в регистрах понятны. - Леонид Иванович(06.11.2013 23:46)
- standard_peripheral_library я сразу выкинул, на изучение всего этого меня не хватит. - Леонид Иванович(06.11.2013 23:39)
- Тогда ИАР вообще идет боком.После слов ...С момента выхода версии IAR EWARM 6.2 в среду разработки включены собственные библиотеки CMSIS (файлы core_cm3). Это нововведение обосновывают улучшением оптимизации кода. При загрузке проектов, plainuser(214 знак., 07.11.2013 13:16)
- В голове полная каша. Никак не могу разобраться со startup. Леонид Иванович(450 знак., 06.11.2013 22:51)
- Универсального startup*.s не существует в природе - слишком много принципиально разных процов на едином ядре. Нужно подключать свой startup_stm32f10x_ld_vl.s соответствующий семейству - _keil(06.11.2013 23:00)
- Это понятно. Но что он делает? - Леонид Иванович(06.11.2013 23:03)
- Как минимум __Vectors - вектора прерываний на которые Вы можете навешать своих обработчиков - _keil(06.11.2013 23:06)
- Это понятно. Но что он делает? - Леонид Иванович(06.11.2013 23:03)
- Поскольку *.S - ассемблер, попробуйте asm(.include 'include\startup_stm32f10x_ld_vl.s'); Он не *.h и не *.c - стиль #include "include\stm32f10x.h" _keil(95 знак., 06.11.2013 22:57)
- Его можно открыть блокнотом и посмотреть! Самое интересное - скелет для обработчиков прерываний. Важная штука - имена процедур. Потребуется если будете писать свой обработчик - _keil(06.11.2013 23:04)
- Прежде чем подключить, хотелось бы знать, что он делает. - Леонид Иванович(06.11.2013 23:00)
- Содержит interrupt vector table - _keil(06.11.2013 23:18)
- и не только. Но для начала можно считать этого знания должно быть достаточно - koyodza(06.11.2013 23:21)
- Посмотрел. Действительно там таблица векторов, Леонид Иванович(458 знак., 06.11.2013 23:38)
- Прикол в том, что фся периферия структурирована. Например, запись в регистр ничем не отличается от записи в элемент структуры. Доставляет !-) И во всех однотипных блоках (например, uart) единый конфиг. Нет такого, чтобы какой-нибудь дополнительный _keil(95 знак., 07.11.2013 09:16)
- Там в стартапе возле имен обработчиков есть волшебное слово weak. И для Cortex не нужно писать модификаторы __interrupt и номер вектора - оно само в этой таблице. И если Вам нужно подменить пустышку на свою функцию, то Вы её просто пишете. - Vit(07.11.2013 00:07)
- Не редактируйте SystemInit(), startup_stm32f10x_md_vl.s, system_stm32f10x.c ! Пользуйтесь HSI или пишите свой init(), вызываемый в начале main() - _keil(07.11.2013 00:05)
- можно написать вообще всё своё, только замучитесь. Да и если уж делать это, то не в первом проекте - koyodza(06.11.2013 23:44)
- А смысл тогда в первом проекте, когда непонятно, как он работает? - Леонид Иванович(06.11.2013 23:47)
- Исключительно просто! Пример: void USART1_IRQHandler(){} - _keil(07.11.2013 00:01)
- Вы же не сможете понять всё одновременно, что-то начнёте понимать раньше, что-то позже. Те вопросы, которые Вы сейчас задаёте, я бы рекомендовал отложить на позже. koyodza(164 знак., 06.11.2013 23:51)
- Или писать сразу в HEX ;-) - _keil(07.11.2013 00:01)
- А смысл тогда в первом проекте, когда непонятно, как он работает? - Леонид Иванович(06.11.2013 23:47)
- Посмотрел. Действительно там таблица векторов, Леонид Иванович(458 знак., 06.11.2013 23:38)
- и не только. Но для начала можно считать этого знания должно быть достаточно - koyodza(06.11.2013 23:21)
- Содержит interrupt vector table - _keil(06.11.2013 23:18)
- Универсального startup*.s не существует в природе - слишком много принципиально разных процов на едином ядре. Нужно подключать свой startup_stm32f10x_ld_vl.s соответствующий семейству - _keil(06.11.2013 23:00)
- По ссылке нашел такой текст (это правда?): Леонид Иванович(06.11.2013 23:10, ссылка)