11.08.2015, 14:57
|
|
Частый гость
Регистрация: 11.08.2015
Сообщений: 21
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
stm32f10x IAR startup
Доброе здрасьти.
Странное дело: собрал в IAR ARM проект:
МК stm32f103vct6
-поморгашка в главном цикле
-по нажатию кнопки вызвать прерывание, вкл/выкл другой светодиод
Теперь, собственно, проблема:
-если из проекта удалить startup_stm32f10x.
то фоновая поморгашка работает, но при нажатии на кнопку контроллер
виснет
-если же в проект добавить файл стартапа, то ни поморгашка, ни
прерывание не работают.
Люди добрые, помогите
p.s. естественно, я недавно начал переходить на ARM.
p.p.s. буду очень признателен, если дадите ссылку на решение подобной проблемы, ибо в даташите не смог.
|
|
|
|
11.08.2015, 20:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: stm32f10x IAR startup
В 14-й строчке посмотри
|
|
|
|
12.08.2015, 07:42
|
|
Частый гость
Регистрация: 11.08.2015
Сообщений: 21
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: stm32f10x IAR startup
Как понял:
-в файле startup расписаны вектора прерываний;
-если к проекту подключить startup + system, то инициализация PLL идет в обход программиста;
-если подключить startup, то можно ручками прописать SystemInit(), где настроить PLL (так и сделал);
Вот только прерывания не работают. Контроллер в бесконечный цикл уходит.
В startup есть фрагмент:
PUBWEAK EXTI2_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
EXTI2_IRQHandler
B EXTI2_IRQHandler
А я как раз пытаюсь настроить прерывание а-ля GPIOB.2 == INT2
Линию настроил, проверил: без прерывания работает как надо (уровень детектируется).
Где-то в main.cpp:
void EXRI2_IRQHandler(void)
{
EXTI-›PR = (uint32_t)0xffffffff;
if(EXTI-›PR & EXTI_PR_PR2)
{
GPIOB-›ODR ^= GPIO_ODR_ODR2;
}
}
Но по ощущениям что-то вроде:
ORG _interrupt_vector
jmp $ //while(1){}
Как исправить - понятия не имею...
Последний раз редактировалось LetalNik; 12.08.2015 в 09:36.
|
|
|
|
12.08.2015, 10:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: stm32f10x IAR startup
Ошибку в void исправь
И ты вначале сбрасываешь флаг прерывания, а потом надеешься, что он будет установлен...
|
|
|
|
12.08.2015, 10:46
|
|
Частый гость
Регистрация: 11.08.2015
Сообщений: 21
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: stm32f10x IAR startup
Спасибо, разобрался. Глупость была совсем.
Последний раз редактировалось LetalNik; 12.08.2015 в 12:48.
|
|
|
|
12.08.2015, 17:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: stm32f10x IAR startup
Сбрасывать флаг прервания в самой последней инструкции обработчика тоже нельзя, иначе после выхода ядро снова войдёт в обработчик... ДМБ помогает конечно
|
|
|
|
13.08.2015, 07:46
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: stm32f10x IAR startup
Сообщение от niXto
|
Сбрасывать флаг прервания в самой последней инструкции обработчика тоже нельзя, иначе после выхода ядро снова войдёт в обработчик...
|
Это почему?
|
|
|
|
13.08.2015, 08:50
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: stm32f10x IAR startup
Особенности Cortex. Может выйти из прерывания раньше, чем сбросить флаг.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Подниму тему WinAVR vs IAR
|
oleg110592 |
Микроконтроллеры, АЦП, память и т.д |
5 |
24.10.2015 14:06 |
Проба пера AT91SAM9260 + IAR + J-Link
|
ZED® |
Микроконтроллеры, АЦП, память и т.д |
31 |
07.12.2010 21:18 |
Помогите с проектом на IAR EW for AVR для Atmega32+WG12864
|
PROFF2010 |
Микроконтроллеры, АЦП, память и т.д |
1 |
22.10.2010 00:01 |
IAR EWEZ80 изчез с сайта IAR где взять?
|
int4880053 |
Микроконтроллеры, АЦП, память и т.д |
0 |
26.05.2009 20:03 |
Обновление IAR Embedded Workbench for Microchip PIC18
|
i8051 |
Микроконтроллеры, АЦП, память и т.д |
2 |
29.05.2008 15:35 |
Часовой пояс GMT +4, время: 18:14.
|
|