Я начинаю делать некоторые простые проекты на STM32L152 Cortex-M3 ...Как настроить обработчик исключений для Cortex-M3
Я прочитал, что M3 является Thumb2 только и, таким образом, мы должны держать LSB обработчиков исключений обращается к «1», чтобы оставаться в режиме большого пальца.
.thumb
.section .startup, "ax"
exc_vectors:
.word top_of_stack
.word reset_handler
.word NMI_handler
.word hardfault_handler
.
.
reset_handler:
@some code here
Поскольку инструкции 16-бит или 32-бит, это правильно сказать, что символ «reset_handler» будет иметь адрес с LSB = 0?
Если это так, как обычно, когда/когда/где устанавливается LSB символов обработчиков (reset_handler, NMI_handler и т. Д.) На «1»?
Большое спасибо
спасибо, еще 2 вопроса: как будет компилятор C знает, что «ResetISR» - это процедура обработчика исключений (чтобы добавить 1 к адресу)? Кроме того, что, если я использую сборку для написания моей программы запуска и ISR, вместо использования C? Я просто добавляю 1 к адресам обработчиков в векторной таблице? – foob
при создании проекта C будет создан код запуска; он будет содержать векторную таблицу с директивой #pragma, чтобы поместить ее с помощью правил таблицы векторов, а в этом векторе будет указатель на функцию ResetISR. Если вы используете ассемблер, вы просто добавляете 1, это правильно. – kirill