Перейти к содержанию

Stm32L Discovery Режим Отладки


Azur

Рекомендуемые сообщения

Здравствуйте, есть простенькая программка моргания светодиодом. Работает. Хотел посмотреть как работает программа. Вошел в режим отладки и начал пошагово выполнять программу. Включение/выключение светодиода происходит в подпрограмме прерывания таймера. В режиме отладки программа туда никогда не попадает... Не могу понять почему... :(

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Дошагал. Флаг прерывания сработал, а в подпрограмму все равно не перешел.... В том то и дело..., хотя сама программа рабочая... Что то с отладкой не так...

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

CooCox IDE v1.7.6

Код:

#include "stm32l1xx.h"
void TIM7_IRQHandler(void);
uint8_t i = 0;
// - частота по дефолту 2.097 MHz
int main(void)
{
//----- RCC - включение тактирования -----
RCC->AHBENR|=RCC_AHBENR_GPIOBEN;
// clock portB enable;
RCC->APB1ENR|= RCC_APB1ENR_TIM7EN;    // clock TIM7 enable;
//----- I/O configuration -----
GPIOB->MODER|=  GPIO_MODER_MODER6_0;
GPIOB->OTYPER&=  ~GPIO_OTYPER_OT_6;
GPIOB->PUPDR&=  ~GPIO_PUPDR_PUPDR6;
GPIOB->OSPEEDR|=  GPIO_OSPEEDER_OSPEEDR6;
//----------------------------------------------
NVIC_SetPriority(TIM7_IRQn,1);
NVIC_EnableIRQ(TIM7_IRQn);
TIM7-> DIER|= TIM_DIER_UIE;	  // interrupt enable
TIM7-> PSC= 0xffff;	    // prescaler
TIM7-> ARR =  0x000f;
TIM7-> CR1|= TIM_CR1_CEN;	  // TIM7 enable
//--------------------------------------------------------------------------
int delay=0;
while(1)
{
 delay++;	 // просто так....
}
}
void TIM7_IRQHandler(void)
{
TIM7->SR &= ~TIM_SR_UIF;
//Сбрасываем бит вызова прерывания.
if (i == 0)  //Проверяем текущее состояние светодиода
{GPIOB->BSRRL |= GPIO_BSRR_BS_6;} 
//Зажигаем светодиод
else
{GPIOB->BSRRH |= GPIO_BSRR_BS_6;} 
//Или гасим светодиод
i = ~i;
}

Все работает... я не могу понять почему в пошаговом режиме не попадаю в обработчик прерывания. Если, к примеру, поставлю breakpoint в обработчик прерывания и нажму RUN(F5) то попадаю, если пошагово F11 - не попадаю....

Ссылка на комментарий
Поделиться на другие сайты

Если, к примеру, поставлю breakpoint в обработчик прерывания и нажму RUN(F5) то попадаю
В режиме отладки программа туда никогда не попадает...
Нет слов... :wall:Обожрутся мухоморов, потом выразиться нормально не могут...

Ещё и минусуете ответы на свои глупые вопросы. Какой вопрос, такие и ответы.

В первую очередь, научитесь нормально задавать вопросы, тогда, в большинстве случаев, сами будете находить на них ответы.

Ссылка на комментарий
Поделиться на другие сайты

Потому что шаг - переход с одной строки кода на другую. Иногда с заходом в функцию, если стоИт вызов функции на текущей строке.

Как Вы собрались шагами дошагать до обработчика, совершенно не понятно...

Ссылка на комментарий
Поделиться на другие сайты

Потому что шаг - переход с одной строки кода на другую. Иногда с заходом в функцию, если стоИт вызов функции на текущей строке.

Как Вы собрались шагами дошагать до обработчика, совершенно не понятно...

Видимо мы друг друга не понимаем....

Запускаю режим отладки и начинаю шагать - верно? Дошагиваю я до бесконечного цикла while - верно? И начинаю там крутиться, но не бесконечно - верно? Т.к. в какой то момент программа перейдет в обработчик прерывания - верно? Переполниться счетчик таймера, установиться флаг и я должен попасть в подпрограмму прерывания - так?

Ну так почему же я нажимая на "волшебную" кнопочку F11 туда не попадаю???? - вот в чем вопрос ребята...

Ну так почему при пошаговом не попадаю?

а брекпоинт в прерывание поставить никак?

По этому поводу я уже писал. Ставлю брэйк - попадаю...

Ссылка на комментарий
Поделиться на другие сайты

установиться флаг и я должен попасть в подпрограмму прерывания - так?
Нет, не так. Вы перейдёте на следующую строку. А обработчик если и выполнится, ты Вы этого не заметите.

Ещё раз говорю, шаг - это переход на следующую строку. И пофиг чё там между строками происходит.

Ссылка на комментарий
Поделиться на другие сайты

И что, что в режиме отладки ? Там много чего мимо проходит. Когда Вы делаете шаг, ставится брекпоинт на следующую строку и запускается run. Пофигу чего там между шагами.

Иначе Вы бы по каждой АСМовской строке шагали.

Ссылка на комментарий
Поделиться на другие сайты

А как мне тогда поймать момент вызова прерывания?

(С аврками баловался в студии на ассемблере, там есть симулятор, в нем все как помаслу - переполнился таймер, встали флаги, пошли в прерывание... все в пошаговом работало...)

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...