Jump to content
Azur

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

С чего Вы взяли, что не попадает ?

Если он мигает, то программа по-любому туда попадает.

Share this post


Link to post
Share on other sites

В режиме отладке при пошаговой работе программы не попадает. В этом и вопрос.

Share this post


Link to post
Share on other sites

Вебинар «МЭМС-датчики ST для работы со звуком – новые возможности» (28.10.2020)

28 октября все желающие приглашаются для участия в вебинаре, посвященном семейству МЭМС-датчиков STMicroelectronics для акустических приложений. Предметом детального рассмотрения на вебинаре станут микрофоны, их топологии применения и возможности. Вы услышите о новых мультирежимных широкодиапазонных микрофонах с нижним портом и PDM-интерфейсом для систем с батарейным питанием.

Подробнее

STM32L562E-DK – первая отладочная платформа ST на ядре ARM Cortex-M33

STMicroelectronics представляет демонстрационно-отладочную платформу на базе ядра Cortex-M33 – STM32L562E-DK. Данная платформа основана на микроконтроллере нового семейства – STM32L5. STM32L562E-DK позволяет разработчику в полной мере раскрыть и опробовать новые возможности микроконтроллеров STM32L5 с тщательно проработанным функционалом для обеспечения высокого уровня безопасности и защиты.

Подробнее

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

Share this post


Link to post
Share on other sites

Тест уровня кондуктивной помехи электронного устройства

Электромагнитная совместимость (ЭМС) является важным параметром электронных устройств, особенно это актуально в современном мире, насыщенном разнообразными гаджетами. Специалисты компании Mornsun подготовили видеоролик по тестированию одной из составляющих ЭМС – кондуктивной помехи.

Подробнее

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 - не попадаю....

Share this post


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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

Share this post


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

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

Share this post


Link to post
Share on other sites

Я же в режиме отладки, как так какие то события мимо меня происходят?

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения


  • Угловые разъемы питания

  • Similar Content

    • By strifonoff
      это снова я...
      Максимального быстродействия АЦП можно достичь при частоте АЦП 14 МГц, а этого можно добиться только при системной частоте 56 МГц (если внешний кварц на 8 МГц).
      Но возникает проблема со скоростями UART: значение регистра BRR не получится выставить так, что бы скорость была из стандартного ряда.
      Назрели несколько вопросов:
      1) возможно ли менять системную частоту на лету? (чую, что можно, но пока не знаю как) 
      2) критична ли ошибка в скорости UART по сравнению со стандартной? (что будет на другой стороне заранее не известно, т.к. любой может воткнуть свой девайс работающий на какой-то заранее согласованной стандартной скорости)
      3) как поведёт себя железо (состояние ОЗУ, регистров перефирии, состояние ног и т.д.) на изменение частоты? Две части программы () практически независимы, их объединяет только один массив, который наполняется в первой половине, а обрабатывается в другой.
       
    • By xrou
      Здравствуйте, пытаюсь обрабатывать пакеты приходящие от ESP8266 (01), но проблема в том, что пакеты всегда разной длины ведь мы не знаем, что напишет пользователь (хотя даже ответы на AT команды всегда разной длины). Знаю, что в плате F0 есть прерывание по символу, но у меня F103C8T6. Как быть? Создать массив большого размера нельзя, т.к. HAL_Recieve_IT ждет пока не наберется нужное кол-во символов.
      Приму любую идею и советы
    • By Deel
      Всем доброго времени суток!!! Нужна помощь ЗНАТАКОВ !!! Строим самодельный руль для ПК!!! Руль с прямым приводом (DirectDrive) на базе STM32. Двигатель управляется через BTS7960, всё как бы работает, но при большой нагрузке одна плата не справляется, выгорают чипы!!! И из-за этого хочется запараллелить две платы. Но и тут порой беда, две запараллеленные платы порой глючат, и двигатель не слушается! Вот и решил заново нарисовать свою схему, прошу проверить на правильность. Выкладываю оригинальную схему на плату от китайцев, и свою предполагаемую схему. Если есть ошибка, прошу сильно не пинайте, лучше подскажите



      Забыл упомянуть про движок - dynamo sliven pik 12 3/10-3


    • By For the North !
      Подскажите, как подключить электретный микрофон к отладочной плате stm32f0discovery. Выбрал микрофон VS4011S36, 4,5 В, 4 мм. Нужно знать конкретно какие провода к каким входам подключать. Заранее спасибо!


      https://static.chipdip.ru/lib/735/DOC000735976.pdf   --- Datasheet на плату
    • By xrou
      Здравствуйте. Собираю светодиодный индикатор. Использую stm32F103C8T6, сдвиговый регистр 74HC595 (HYC 825Z - не знаю что это значит), светодиодный индикатор на 10 светодиодов SHB10R.
      Подключаю по такой схеме
      https://cxemka.com/upload/art/74hc595_spi_stm32/connection_stm32_74hc595_spi.svg
      Код в Keil с использованием HAL и Cube
       
      Проблема: на индикаторе то вообще ничего не зажигается, то надо раз 10 нажать резет и только спустя какое то время оно начинает работать, но не правильно:

      По идее оно должно зажечь сначала весь индикатор, 4 светодиода, 2 и так по кругу. Но оно иногда проскакивает состояния, зажигает левые светодиоды.

      Подскажите в чем может быть проблема, изучаю stm совсем не много еще толком ничего не знаю. Можно ли вообще использовать HAL для передачи данных? или писать самому.
       
×
×
  • Create New...