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

Очистка флага прерывания по переполнению в таймере общего назначения. STM32F105RC

1 час назад, Arlleex сказал:

делает то же самое. Посмотрите внимательнее:wink:

Тогда его надо сразу в топку, а автору вопроса искать отличия в двух строках:

TIM6 ->SR &= ~TIM_SR_UIF;

и 

TIM6 ->SR = ~TIM_SR_UIF;

 

Поделиться сообщением


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

35 минут назад, ViKo сказал:

ClearITPendingBit означает стереть pending bit в контроллере прерываний. Он сам стирается, когда выполняется прерывание. А нужно стереть источник запроса прерывания. 

Путаете с NVIC_ClearPendingIRQ().

Поделиться сообщением


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

13 минут назад, Сергей Борщ сказал:

Тогда его надо сразу в топку, а автору вопроса искать отличия в двух строках:


TIM6 ->SR &= ~TIM_SR_UIF;

и 


TIM6 ->SR = ~TIM_SR_UIF;

 

В TIM6 в статусе больше ничего нема.

Поделиться сообщением


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

Только что, Сергей Борщ сказал:

Тогда его надо сразу в топку, а автору вопроса искать отличия в двух строках:

Да, верно, побитового И там не надо (я, увидев наличие ClearITPendingBit() не стал обращать внимание на другое).

 

void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)
{
  /* Check the parameters */
  assert_param(IS_TIM_ALL_PERIPH(TIMx));

  /* Clear the IT pending Bit */
  TIMx->SR = (uint16_t)~TIM_IT;
}

 

Поделиться сообщением


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

7 минут назад, Arlleex сказал:

Путаете с NVIC_ClearPendingIRQ().

Запросто могу, поскольку в абракадабре функций Куба и т.п. не разбираюсь. Однако, подождем результатов вскрытия.

Поделиться сообщением


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

Только что, ViKo сказал:

Запросто могу, поскольку в абракадабре функций Куба и т.п. не разбираюсь. Однако, подождем результатов вскрытия.

Да это SPL. Не куб. Этим еще хоть можно пользоваться как-то:biggrin:

А что ждать - вроде уже известно, в чем была ошибка.

Поделиться сообщением


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

6 минут назад, Arlleex сказал:

Да, верно, побитового И там не надо

Наоборот!

3 минуты назад, Arlleex сказал:

Да это SPL. Не куб.

А оно еще где-то доступно для скачивания? Не знал.

Поделиться сообщением


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

Только что, ViKo сказал:

А оно еще где-то доступно для скачивания? Не знал.

https://www.st.com/en/embedded-software/stsw-stm32054.html

Поделиться сообщением


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

24 minutes ago, ViKo said:

не разбираюсь

Не давать советы в области, в которой не разбираешься - хорошая, правильная привычка.

 

9 minutes ago, Arlleex said:

Как оказывается, поддерживают: https://www.st.com/en/embedded-software/stsw-stm32054.html

Этому файлу 8 лет скоро будет. Так что довольно условно поддерживают...

Поделиться сообщением


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

2 минуты назад, esaulenka сказал:

Не давать советы в области, в которой не разбираешься - хорошая, правильная привычка.

Для меня слово Pending имеет однозначное толкование - захваченный, но не обработанный запрос. Если писатели библиотеки используют это имя в функции стирания флага запроса прерывания в таймере, то это значит, они сами не шарят в железе МК. И копаться в их функциях не считаю нужным, потому и не разбираюсь. Зато разбираюсь в микроконтроллерах, и потому высказываюсь.

Поделиться сообщением


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

Только что, esaulenka сказал:

Этому файлу 8 лет скоро будет. Так что довольно условно поддерживают...

Ну а чего мусолить набор исходников, переключающих битики в регистрах периферии? Что там нового придумать и что там сопровождать? Потому и не поддерживают.

Поделиться сообщением


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

36 minutes ago, ViKo said:

Наоборот!

А оно еще где-то доступно для скачивания? Не знал.

да,доступна, просто она больше не обновляется.

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

У меня возникло непонимание с тактирование таймера.

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);

скакой частотой он будет тактироваться? как я вижу из картинки, почти все таймера висят на APB1, те ее скорость 36МГц, чтобы получить искомые 100us мне надо в прескалер положить 3600-1, но с таким значение выходит в 2 раза быстрее. ТЕ, записав 7200-1 я получаю желаемое. Но не могу понять почему так.

image.thumb.png.b4eb9c49bed106a1c9dda1ff1c8be44b.png

Изменено пользователем evsx1
правка текста

Поделиться сообщением


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

Только что, ViKo сказал:

Для меня слово Pending имеет однозначное толкование - захваченный, но не обработанный запрос. Если писатели библиотеки используют это имя в функции стирания флага запроса прерывания в таймере, то это значит, они сами не шарят в железе МК. И копаться в их функциях не считаю нужным, потому и не разбираюсь. Зато разбираюсь в микроконтроллерах, и потому высказываюсь.

Я, конечно, не пытаюсь защищать SPL-писателей, но... наличие различающегося префикса в функциях стирания запроса на прерывание (TIM_ClearITPendingBit(), USART_ClearITPendingBit(), SPI_ClearITPendingBit() и т.д.) как бы намекает, что будет что-то сбрасываться в регистрах этой самой периферии. Учитывая, что, помимо бит, сформировавших запрос на прерывание, в этих регистрах сбрасывать нечего, в сухом остатке получаем вывод - функции x_ClearITPendingBit() сбрасывают бит запроса на прерывание.

Хотя, конечно, кому как.

Поделиться сообщением


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

6 минут назад, evsx1 сказал:

как я вижу из картинки, почти все таймера висят на APB1, те ее скорость 36МГц, чтобы получить искомые 100us мне надо в прескалер положить 3600-1, но с таким значение выходит в 2 раза быстрее. ТЕ, записав 7200-1 я получаю желаемое. Но не могу понять почему так

Посмотрите на картину Clock Tree в RM, там для таймеров есть условия x1 x2. 

Поделиться сообщением


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

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...