Микроконтроллеры STM32 - тонкости работы, отладочные платы
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
Я CubeIDE пользуюсь редко, но с каких пор Куб стал компилировать код? Генерировать проект, который потом компилируется, например, Keil, это одно, но сразу компилировать Си-шный код CubeIDE давно научился?
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
smacorp, вроде да: "STM32CubeIDE is an advanced C/C++ development platform with peripheral configuration, code generation, code compilation, and debug features for STM32" (тоже редко пользовался и давно)
Добавлено after 31 minute 41 second:
Как уже говорил выше, лучше бы начать с азов, с изучения двоичной алгебры, языка, потом инструмента... ничего хорошего из того, как Вы делаете сейчас, не выйдет, поверьте. Даже если получится работающая программа, в итоге останется крайне неправильный опыт.
Добавлено after 31 minute 41 second:
С Volatile вчера не помогло. Но может сегодня поможет? Бывает у Cube IDE такой загон, иногда он bin файл не перезаписывает или собирает по предыдущему коду, а я этого не заметил, приговорил Volatile, и продолжил отлаживать костыль printf...
Да, так и вышло - Cube настолько "умный", что пока не внесешь значительные изменения в код, он может не пересобраться. Не раз с утра такое замечал - куб запустил, код собрал, а бинарник остался вчерашний
Что-то не верится мне в это. Не знаю ни одной среды разработки с таким поведением.Да, так и вышло - Cube настолько "умный", что пока не внесешь значительные изменения в код, он может не пересобраться. Не раз с утра такое замечал - куб запустил, код собрал, а бинарник остался вчерашний
Как уже говорил выше, лучше бы начать с азов, с изучения двоичной алгебры, языка, потом инструмента... ничего хорошего из того, как Вы делаете сейчас, не выйдет, поверьте. Даже если получится работающая программа, в итоге останется крайне неправильный опыт.
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
С Volatile вчера не помогло.
Уж который раз наш мучитель страйкболистов пишет про какой-то 'Volatile'. Кто-нить знает - что это такое?
Может все здесь думают, что он имеет в виду 'volatile', а он на самом деле в коде пишет 'Volatile'.
Код: Выделить всё
#define VolatileДобавлено after 1 minute 9 seconds:
Как уже говорил выше, лучше бы начать с азов
Согласен полностью. Автору нужно брать учебник и садиться за учёбу. Рано ему ещё программы писать....Говорить: "Загляни в дизассемблер кода или в листинг - и сразу поймёшь, что не так с переменными и как они в реале работают" - вообще не имеет смысла. Всё равно, что слепому говорить "Оцени красоту заката".
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
Есть вопрос по отладке. Тренируюсь на STM32F407G-DISC1. Сейчас пытаюсь запустить АЦП с DMA. Если запускать программу в режиме отладки, напряжение показывает правильно. Если выйти из отладки и нажать кратковременно Ресет , отображаемое напряжение на 15% меньше, но измерение работает. Если выключить и включить питание(или подержать Ресет более сек.)- половина напряжения и на его изменение не реагирует. Ну да ладно с измерениями( программа написана не правильно), но в чем тогда смысл отладки?
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
lubitel5 писал(а):чем тогда смысл отладки?
Да хотя бы в том, чтобы узнать о проблемах в вашей схеме и ПО, коли они так реагируют на изменение способа запуска _вашей_ программы.
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
Ну да ладно с измерениями( программа написана не правильно), но в чем тогда смысл отладки?
Вот как раз в этом, кэп. Вы увидели в реале, что ваша "программа написана неправильно". - HardWareMan
- Мучитель микросхем
- Сообщения: 429
- Зарегистрирован: Ср сен 02, 2015 07:47:20
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
но в чем тогда смысл отладки?
Отладка отладке рознь. Если речь за статичную/пошаговую, то она лишь для проверки правильности вашей математики алгоритмов и, возможно, проверки правильности настройки оборудования по вычитке его статусов. А есть динамическая отладка, которая чаще в режиме реального времени и аппаратный отладчик а так же режим отладки в IDE никакого к ней отношения не имеют. Нарушение таймингов - частая ошибка новичков при работе с реальным железом.
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 22 апреля 2026 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
/!\ Обновлений для STM32PowerMon и STM32PowerMon-UCPD временно не будет.
Актуальность репозитория: 22 апреля 2026 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
/!\ Обновлений для STM32PowerMon и STM32PowerMon-UCPD временно не будет.
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
[uquote="lubitel5",url="/forum/viewtopic.php?p=4727511#p4727511"]Ну да ладно с измерениями( программа написана не правильно), но в чем тогда смысл отладки?
Вот как раз в этом, кэп. Вы увидели в реале, что ваша "программа написана неправильно". Это я увидел и без отладки.
Добавлено after 1 minute 44 seconds:
lubitel5 писал(а):чем тогда смысл отладки?
Да хотя бы в том, чтобы узнать о проблемах в вашей схеме и ПО, коли они так реагируют на изменение способа запуска _вашей_ программы.
Как раз с этим такая отладка мне и не помогает.
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1902
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
lubitel5, задавать вопросы о коде без самого кода бессмысленно. Поделитесь хотя бы фрагментом своего кода.
Можете попробовать сделать невозможное? Часто одна строчка или отсутствие настройки ставят исполнение в невозможные ситуации.
Можете попробовать сделать невозможное? Часто одна строчка или отсутствие настройки ставят исполнение в невозможные ситуации.
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
[uquote="lubitel5",url="/forum/viewtopic.php?p=4727511#p4727511"]но в чем тогда смысл отладки?
Отладка отладке рознь. Если речь за статичную/пошаговую, то она лишь для проверки правильности вашей математики алгоритмов и, возможно, проверки правильности настройки оборудования по вычитке его статусов. А есть динамическая отладка, которая чаще в режиме реального времени и аппаратный отладчик а так же режим отладки в IDE никакого к ней отношения не имеют. Нарушение таймингов - частая ошибка новичков при работе с реальным железом.[/uquote]
Да, статичная/пошаговая. Динамическую, скорее всего, уже не осилю.
Добавлено after 2 minutes 5 seconds:
lubitel5, задавать вопросы о коде без самого кода бессмысленно. Поделитесь хотя бы фрагментом своего кода.
Можете попробовать сделать невозможное? Часто одна строчка или отсутствие настройки ставят исполнение в невозможные ситуации.
Можете попробовать сделать невозможное? Часто одна строчка или отсутствие настройки ставят исполнение в невозможные ситуации.
Это можно попробовать.
- HardWareMan
- Мучитель микросхем
- Сообщения: 429
- Зарегистрирован: Ср сен 02, 2015 07:47:20
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
Да, статичная/пошаговая. Динамическую, скорее всего, уже не осилю.
А придётся, увы. Таков путь.
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 22 апреля 2026 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
/!\ Обновлений для STM32PowerMon и STM32PowerMon-UCPD временно не будет.
Актуальность репозитория: 22 апреля 2026 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
/!\ Обновлений для STM32PowerMon и STM32PowerMon-UCPD временно не будет.
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
MX_ADC1_Init();
static void MX_ADC1_Init(void)
{
/** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
*/
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
hadc1.Init.Resolution = ADC_RESOLUTION_12B;
hadc1.Init.ScanConvMode = DISABLE;
hadc1.Init.ContinuousConvMode = DISABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
hadc1.Init.DMAContinuousRequests = DISABLE;
hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
}
/** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
*/
sConfig.Channel = ADC_CHANNEL_VREFINT;
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
}
//----------
VREF = calculate_Vref (VREFIN_CAL); // функция вычисления Vref
uint16_t VREFINT = 0; // измеренное VREFINT
float calculate_Vref (uint16_t VREFIN_Cal) { // функция вычисления Vref
ADC1->CR2 |= ADC_CR2_ADON; // разрешить АЦП
// измерение сигнала
ADC1->CR2 |= ADC_CR2_SWSTART; // запуск АЦП
while(!(ADC1->SR & ADC_SR_EOC)) ; // ожидание завершения преобразования
VREFINT= ADC1->DR;
VREF = 3.3 * VREFIN_Cal / VREFINT;
return VREF;
}
В реалии VREFINT= ADC1->DR=4095 вместо 1682.
static void MX_ADC1_Init(void)
{
/** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
*/
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
hadc1.Init.Resolution = ADC_RESOLUTION_12B;
hadc1.Init.ScanConvMode = DISABLE;
hadc1.Init.ContinuousConvMode = DISABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
hadc1.Init.DMAContinuousRequests = DISABLE;
hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
}
/** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
*/
sConfig.Channel = ADC_CHANNEL_VREFINT;
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
}
//----------
VREF = calculate_Vref (VREFIN_CAL); // функция вычисления Vref
uint16_t VREFINT = 0; // измеренное VREFINT
float calculate_Vref (uint16_t VREFIN_Cal) { // функция вычисления Vref
ADC1->CR2 |= ADC_CR2_ADON; // разрешить АЦП
// измерение сигнала
ADC1->CR2 |= ADC_CR2_SWSTART; // запуск АЦП
while(!(ADC1->SR & ADC_SR_EOC)) ; // ожидание завершения преобразования
VREFINT= ADC1->DR;
VREF = 3.3 * VREFIN_Cal / VREFINT;
return VREF;
}
В реалии VREFINT= ADC1->DR=4095 вместо 1682.
- HardWareMan
- Мучитель микросхем
- Сообщения: 429
- Зарегистрирован: Ср сен 02, 2015 07:47:20
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
Физическое подключение аналогового домена контроллера выполнено согласно букваря?
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 22 апреля 2026 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
/!\ Обновлений для STM32PowerMon и STM32PowerMon-UCPD временно не будет.
Актуальность репозитория: 22 апреля 2026 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
/!\ Обновлений для STM32PowerMon и STM32PowerMon-UCPD временно не будет.
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
VREFINT, внутренний IN_17, настраивал через CubeMX.
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
VREFINT, внутренний IN_17, настраивал через CubeMX.
а если из ADC_Channel_TempSensor прочитать значение?
глаза баяца, руки из жопы, но я не здаюсь
- HardWareMan
- Мучитель микросхем
- Сообщения: 429
- Зарегистрирован: Ср сен 02, 2015 07:47:20
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
VREFINT, внутренний IN_17, настраивал через CubeMX.
Я имел в виду наружные пины контроллера. Или у вас готовая девборда? Если так, посмотрите на её схему, иногда там тоже упрощено.
- Вложения
-
- Screenshot_20250701_150056.png
- (127.78 КБ) 936 скачиваний
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 22 апреля 2026 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
/!\ Обновлений для STM32PowerMon и STM32PowerMon-UCPD временно не будет.
Актуальность репозитория: 22 апреля 2026 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
/!\ Обновлений для STM32PowerMon и STM32PowerMon-UCPD временно не будет.
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
Часть схемы такая, но получается дело не в ней. Наверное я не правильно пользуюсь CubeMX.IDE. Сначала я настраивал IN_11. потом VREFIN, по факту менял только Sampling Time с 3 на 28 и проверял через стат. отладку. Сейчас сделал так: сначала поставил поставил галку на IN_11, потом снял с VREFIN (Sampling Time в настройках сохраняется)- не работает IN_11. Потом снял галку с IN_11 и поставил на VREFIN (Sampling Time сбросилось по умолчанию), выставил Sampling Time=28, сгенерировал- заработало. Похожее было и с непрерывным режимом АЦП: после генерации на Single-channel, single conversion mode, а потом на Single-channel continuous conversion mode, последний у меня не работал. Возможно нужно перед изменением сбрасывать настройки, не знаю. Но вот когда работает в реалии, при пошаговой настройке не выходит из while(), только через Run.
- Вложения
-
- Схема.png
- (19.9 КБ) 194 скачивания
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1902
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
После внесения изменений нажмите "сохранить все", а затем сгенерируйте код (прописав свой код только в указанных местах). Таким образом, код будет под контролем.
Иногда также запускаю очистку, а затем делает и компиляцию. В меню есть опция.
Иногда также запускаю очистку, а затем делает и компиляцию. В меню есть опция.
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
Не знаю, может и не корректный вопрос, но... Пытаюсь хоть немного разобраться с прерываниями и интересует: вот такая реализация обработки данных по прерыванию правильная или нет?
ADC1->SQR1 =0; // 1 регулярный канал
ADC1->SQR3 =11; // 1 преобразование - канал 0
ADC1->SMPR1 |= ADC_SMPR1_SMP11_1; // Установка sample time 28 для канала 11
ADC1->CR2 |= ADC_CR2_DMA; // разрешение DMA
ADC1->CR1 &= ~ADC_CR1_SCAN; // запрет режима сканирования
ADC1->CR2 &= ~ADC_CR2_EOCS; // сбрасываем этот бит, сгенерирован Кубом и не работает непрерывный режим
ADC1->CR2 |= ADC_CR2_CONT; // разрешить непрерывный режим
ADC1->CR2 |= ADC_CR2_ADON; // разрешить АЦП
//----------// Настройка DMA
RCC->AHB1ENR |= RCC_AHB1ENR_DMA2EN; // включаем тактирование шины DMA2
DMA2_Stream0->PAR = (uint32_t) &ADC1->DR; // указываем откуда брать данные
DMA2_Stream0->NDTR = 256; // количество данных которые пишем
DMA2_Stream0->M0AR = (uint32_t) ADC_sum; // указываем куда ложить данные
DMA2_Stream0->CR |= (1 << 13); // размер данных памяти
DMA2_Stream0->CR |= (1 << 11); // размер данных перефирии
DMA2_Stream0->CR |= (1 << DMA_SxCR_CIRC_Pos); // circular
DMA2_Stream0->CR |= (1 << DMA_SxCR_MINC_Pos); // инкремируем адрес памяти для передачи данных
DMA2_Stream0->CR |= (1 << DMA_SxCR_TCIE_Pos); // разрешаем прерывание по завершению передачи данных
DMA2_Stream0->CR |= (1 << DMA_SxCR_EN_Pos); // включаем DMA
NVIC_EnableIRQ(DMA2_Stream0_IRQn); // разрешить прерывания DMA2_Stream0
ADC1->CR2 |= ADC_CR2_SWSTART; // запуск АЦП
while (1)
{
if (flag_end_DMA) {
for (uint16_t count = 0; count < 256; ++count) {
ADC_rez += ADC_sum [count];
}
ledprint (ADC_rez / 256);
flag_end_DMA = 0;
ADC1->CR2 &=~ ADC_CR2_DMA; // запрещаем DMA
ADC1->CR2 |= ADC_CR2_DMA; // разрешение DMA
ADC1->CR2 |= ADC_CR2_ADON; // разрешить АЦП
ADC1->CR2 |= ADC_CR2_SWSTART; // запуск АЦП
}
}
//----------
void DMA2_Stream0_IRQHandler (void) { // прерывания DMA
ADC1->CR2 &=~ ADC_CR2_ADON; // запрет АЦП
DMA2->LIFCR |= (1 << 5) | (1 << 4) | (1 << 3); // сбрасываем флаг окончания передачи,полупередачи и ошибки передачи DMA
flag_end_DMA = 1;
}
ADC1->SQR1 =0; // 1 регулярный канал
ADC1->SQR3 =11; // 1 преобразование - канал 0
ADC1->SMPR1 |= ADC_SMPR1_SMP11_1; // Установка sample time 28 для канала 11
ADC1->CR2 |= ADC_CR2_DMA; // разрешение DMA
ADC1->CR1 &= ~ADC_CR1_SCAN; // запрет режима сканирования
ADC1->CR2 &= ~ADC_CR2_EOCS; // сбрасываем этот бит, сгенерирован Кубом и не работает непрерывный режим
ADC1->CR2 |= ADC_CR2_CONT; // разрешить непрерывный режим
ADC1->CR2 |= ADC_CR2_ADON; // разрешить АЦП
//----------// Настройка DMA
RCC->AHB1ENR |= RCC_AHB1ENR_DMA2EN; // включаем тактирование шины DMA2
DMA2_Stream0->PAR = (uint32_t) &ADC1->DR; // указываем откуда брать данные
DMA2_Stream0->NDTR = 256; // количество данных которые пишем
DMA2_Stream0->M0AR = (uint32_t) ADC_sum; // указываем куда ложить данные
DMA2_Stream0->CR |= (1 << 13); // размер данных памяти
DMA2_Stream0->CR |= (1 << 11); // размер данных перефирии
DMA2_Stream0->CR |= (1 << DMA_SxCR_CIRC_Pos); // circular
DMA2_Stream0->CR |= (1 << DMA_SxCR_MINC_Pos); // инкремируем адрес памяти для передачи данных
DMA2_Stream0->CR |= (1 << DMA_SxCR_TCIE_Pos); // разрешаем прерывание по завершению передачи данных
DMA2_Stream0->CR |= (1 << DMA_SxCR_EN_Pos); // включаем DMA
NVIC_EnableIRQ(DMA2_Stream0_IRQn); // разрешить прерывания DMA2_Stream0
ADC1->CR2 |= ADC_CR2_SWSTART; // запуск АЦП
while (1)
{
if (flag_end_DMA) {
for (uint16_t count = 0; count < 256; ++count) {
ADC_rez += ADC_sum [count];
}
ledprint (ADC_rez / 256);
flag_end_DMA = 0;
ADC1->CR2 &=~ ADC_CR2_DMA; // запрещаем DMA
ADC1->CR2 |= ADC_CR2_DMA; // разрешение DMA
ADC1->CR2 |= ADC_CR2_ADON; // разрешить АЦП
ADC1->CR2 |= ADC_CR2_SWSTART; // запуск АЦП
}
}
//----------
void DMA2_Stream0_IRQHandler (void) { // прерывания DMA
ADC1->CR2 &=~ ADC_CR2_ADON; // запрет АЦП
DMA2->LIFCR |= (1 << 5) | (1 << 4) | (1 << 3); // сбрасываем флаг окончания передачи,полупередачи и ошибки передачи DMA
flag_end_DMA = 1;
}
- Вложения
-
- ADC_DMA_interrupt.txt
- (2.63 КБ) 196 скачиваний
Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // включаем тактирование TIM3
TIM3->PSC = 41; // Частота 1 МГц (42 / (41+1))
TIM3->ARR = 65000;
TIM3->CCMR1 |= TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_1; // CC1 and CC2 channel is configured as input, IC1 and IC2 is mapped on TI1
TIM3->CCER |= TIM_CCER_CC1P_Msk | TIM_CCER_CC1E_Msk | TIM_CCER_CC2E_Msk; // TIM3_CCR1- активный по спаду, TIM3_CCR2- активный по наростанию, capture enabled
TIM3->SMCR |= TIM_SMCR_TS_0 | TIM_SMCR_TS_2 | TIM_SMCR_SMS_2; // TS-Trigger selection: 101: Filtered Timer Input 1 (TI1FP1); : SMS-Reset mode
NVIC_EnableIRQ(TIM3_IRQn); // разрешаем прерывания от TIM3
//----------
void TIM3_IRQHandler () { // interrupt TIM3
GPIOD->BSRR = GPIO_PIN_13;
}
Здравствуйте. Хочу настроить режим PWM input mode для работы с пультом. Пр нажатии на кнопку в регистре TIMx status register (TIMx_SR) устанавливаются флаги что значения счетчика зафиксированы в регистрах TIMx_CCR1,2, значит сигнал захватывается? Но не вызывается прерывание, почему?
TIM3->PSC = 41; // Частота 1 МГц (42 / (41+1))
TIM3->ARR = 65000;
TIM3->CCMR1 |= TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_1; // CC1 and CC2 channel is configured as input, IC1 and IC2 is mapped on TI1
TIM3->CCER |= TIM_CCER_CC1P_Msk | TIM_CCER_CC1E_Msk | TIM_CCER_CC2E_Msk; // TIM3_CCR1- активный по спаду, TIM3_CCR2- активный по наростанию, capture enabled
TIM3->SMCR |= TIM_SMCR_TS_0 | TIM_SMCR_TS_2 | TIM_SMCR_SMS_2; // TS-Trigger selection: 101: Filtered Timer Input 1 (TI1FP1); : SMS-Reset mode
NVIC_EnableIRQ(TIM3_IRQn); // разрешаем прерывания от TIM3
//----------
void TIM3_IRQHandler () { // interrupt TIM3
GPIOD->BSRR = GPIO_PIN_13;
}
Здравствуйте. Хочу настроить режим PWM input mode для работы с пультом. Пр нажатии на кнопку в регистре TIMx status register (TIMx_SR) устанавливаются флаги что значения счетчика зафиксированы в регистрах TIMx_CCR1,2, значит сигнал захватывается? Но не вызывается прерывание, почему?