|
|
  |
libopencm3, Неплохая либа для кортексов... |
|
|
|
Oct 14 2015, 06:38
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 2-02-11
Пользователь №: 62 650

|
Цитата(Golikov A. @ Oct 13 2015, 14:39)  это вы не соглашались что через регистры было бы быстрее  ? Ну так это я раз делаю, а в регистры писать постоянно надо  Ну конечно, я было подумал, что все соберется) Я же правильно понимаю, что вот это Код #define IRQ_HANDLERS \ [NVIC_NVIC_WWDG_IRQ] = nvic_wwdg_isr, \ [NVIC_PVD_IRQ] = pvd_isr, \ [NVIC_TAMP_STAMP_IRQ] = tamp_stamp_isr, \ инициализация массива с явным указанием индексов? Не могу найти определения этих индексов. По идее, где-то должен быть файл примерно такого содержания: Код #define NVIC_NVIC_WWDG_IRQ 0 #define NVIC_PVD_IRQ 1 Но я его не вижу. Опять генерация скриптом? Так я даже в скриптах подобного текста не вижу. -- upd: нагуглил файл, зовется nvic_f4.hНо в репе его опять нет. Не, ну после таких либ я уже не так плохо отношусь к желанию писать в регистры  Еще вопрос: Код #pragma weak dma2d_isr = blocking_handler где dma2d_isr потом используется в качестве адреса для заполнения таблицы векторов, а blocking_handler - void функция - это спецификация си или опять какой то прибамбас GCC? Ибо IAR ругается на неопределенный dma2d_isr, а я бы сделал так: Код __weak dma2d_isr(void) { blocking_handler();}; хотя, конечно, этот вариант красивее, но не компилится
Сообщение отредактировал drozel - Oct 14 2015, 09:10
|
|
|
|
|
Oct 15 2015, 06:27
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(drozel @ Oct 14 2015, 09:38)  Еще вопрос: Код #pragma weak dma2d_isr = blocking_handler где dma2d_isr потом используется в качестве адреса для заполнения таблицы векторов, а blocking_handler - void функция - это спецификация си или опять какой то прибамбас GCC? Ибо IAR ругается на неопределенный dma2d_isr Это gcc'шная штука: https://gcc.gnu.org/onlinedocs/gcc/Weak-Pragmas.htmlУдобно, но, к сожалению, не совместимо со стандартными компиляторами.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Oct 15 2015, 11:33
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 2-02-11
Пользователь №: 62 650

|
Цитата(esaulenka @ Oct 15 2015, 12:27)  Это gcc'шная штука: Как ни странно, удалось заставить работать, помогли в соседнем топикеКод __weak void dma2d_isr(void); #pragma weak dma2d_isr = blocking_handler
|
|
|
|
|
Oct 21 2015, 13:10
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 2-02-11
Пользователь №: 62 650

|
Подскажите, к чему относится дефайн __ARM_ARCH_7M__? Вроде написано CM3 or CM4, т.е. для STM32F407 надо дефайнить? Код /* Those are defined only on CM3 or CM4 */ #if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
|
|
|
|
|
Oct 22 2015, 03:59
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 2-02-11
Пользователь №: 62 650

|
Цитата(AHTOXA @ Oct 22 2015, 09:44)  Его не надо определять. Надо определить -mcpu (и -mfpu). В зависимости от них компилятор сам выведет __ARM_ARCH_xxx. Это определяется директивами препроцессора или опять фишка GCC? (У меня тоже IAR=) =
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|