Сергей Борщ 141 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 1 час назад, Arlleex сказал: делает то же самое. Посмотрите внимательнее Тогда его надо сразу в топку, а автору вопроса искать отличия в двух строках: TIM6 ->SR &= ~TIM_SR_UIF; и TIM6 ->SR = ~TIM_SR_UIF; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 35 минут назад, ViKo сказал: ClearITPendingBit означает стереть pending bit в контроллере прерываний. Он сам стирается, когда выполняется прерывание. А нужно стереть источник запроса прерывания. Путаете с NVIC_ClearPendingIRQ(). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 13 минут назад, Сергей Борщ сказал: Тогда его надо сразу в топку, а автору вопроса искать отличия в двух строках: TIM6 ->SR &= ~TIM_SR_UIF; и TIM6 ->SR = ~TIM_SR_UIF; В TIM6 в статусе больше ничего нема. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба Только что, Сергей Борщ сказал: Тогда его надо сразу в топку, а автору вопроса искать отличия в двух строках: Да, верно, побитового И там не надо (я, увидев наличие 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; } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 7 минут назад, Arlleex сказал: Путаете с NVIC_ClearPendingIRQ(). Запросто могу, поскольку в абракадабре функций Куба и т.п. не разбираюсь. Однако, подождем результатов вскрытия. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба Только что, ViKo сказал: Запросто могу, поскольку в абракадабре функций Куба и т.п. не разбираюсь. Однако, подождем результатов вскрытия. Да это SPL. Не куб. Этим еще хоть можно пользоваться как-то А что ждать - вроде уже известно, в чем была ошибка. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 6 минут назад, Arlleex сказал: Да, верно, побитового И там не надо Наоборот! 3 минуты назад, Arlleex сказал: Да это SPL. Не куб. А оно еще где-то доступно для скачивания? Не знал. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба Только что, ViKo сказал: Наоборот! Неа Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба Только что, ViKo сказал: А оно еще где-то доступно для скачивания? Не знал. https://www.st.com/en/embedded-software/stsw-stm32054.html Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 24 minutes ago, ViKo said: не разбираюсь Не давать советы в области, в которой не разбираешься - хорошая, правильная привычка. 9 minutes ago, Arlleex said: Как оказывается, поддерживают: https://www.st.com/en/embedded-software/stsw-stm32054.html Этому файлу 8 лет скоро будет. Так что довольно условно поддерживают... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 2 минуты назад, esaulenka сказал: Не давать советы в области, в которой не разбираешься - хорошая, правильная привычка. Для меня слово Pending имеет однозначное толкование - захваченный, но не обработанный запрос. Если писатели библиотеки используют это имя в функции стирания флага запроса прерывания в таймере, то это значит, они сами не шарят в железе МК. И копаться в их функциях не считаю нужным, потому и не разбираюсь. Зато разбираюсь в микроконтроллерах, и потому высказываюсь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба Только что, esaulenka сказал: Этому файлу 8 лет скоро будет. Так что довольно условно поддерживают... Ну а чего мусолить набор исходников, переключающих битики в регистрах периферии? Что там нового придумать и что там сопровождать? Потому и не поддерживают. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evsx1 0 6 февраля, 2019 Опубликовано 6 февраля, 2019 (изменено) · Жалоба 36 minutes ago, ViKo said: Наоборот! А оно еще где-то доступно для скачивания? Не знал. да,доступна, просто она больше не обновляется. Вся проблема была,что таймер в дебаг режиме продолжал работать. Строки ,которые завставляют его останавливаться в дебаг режиме были выше, с ним в дебаг режиме он не считал и я увидел сброс бита в прерывании У меня возникло непонимание с тактирование таймера. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); скакой частотой он будет тактироваться? как я вижу из картинки, почти все таймера висят на APB1, те ее скорость 36МГц, чтобы получить искомые 100us мне надо в прескалер положить 3600-1, но с таким значение выходит в 2 раза быстрее. ТЕ, записав 7200-1 я получаю желаемое. Но не могу понять почему так. Изменено 6 февраля, 2019 пользователем evsx1 правка текста Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба Только что, ViKo сказал: Для меня слово Pending имеет однозначное толкование - захваченный, но не обработанный запрос. Если писатели библиотеки используют это имя в функции стирания флага запроса прерывания в таймере, то это значит, они сами не шарят в железе МК. И копаться в их функциях не считаю нужным, потому и не разбираюсь. Зато разбираюсь в микроконтроллерах, и потому высказываюсь. Я, конечно, не пытаюсь защищать SPL-писателей, но... наличие различающегося префикса в функциях стирания запроса на прерывание (TIM_ClearITPendingBit(), USART_ClearITPendingBit(), SPI_ClearITPendingBit() и т.д.) как бы намекает, что будет что-то сбрасываться в регистрах этой самой периферии. Учитывая, что, помимо бит, сформировавших запрос на прерывание, в этих регистрах сбрасывать нечего, в сухом остатке получаем вывод - функции x_ClearITPendingBit() сбрасывают бит запроса на прерывание. Хотя, конечно, кому как. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 6 минут назад, evsx1 сказал: как я вижу из картинки, почти все таймера висят на APB1, те ее скорость 36МГц, чтобы получить искомые 100us мне надо в прескалер положить 3600-1, но с таким значение выходит в 2 раза быстрее. ТЕ, записав 7200-1 я получаю желаемое. Но не могу понять почему так Посмотрите на картину Clock Tree в RM, там для таймеров есть условия x1 x2. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться