Всем привет, есть такая задача. Хочу сделать вольтамперметр на STM32. В качестве индикатора хочу использовать два 3 позиционных семисегментных индикатора. Возникла следующая проблема, не получается совместная работа таймера Tim1 c АЦП, понимаю что проблема в настройке контроллера вектора прерываний, но сам разобраться с этим не могу, может у кого то была подобная проблема. Таймер нужен для динамического вывода полученных значений, получается так что как только включается таймер, ацп тормозится и все. При чем есть проект вольтамперметра без таймера, где значения выводятся на OLED - дисплей и там все нормально работает.
В общем я разобрался, дело было в последовательности инициализации, вначале надо инициализировать DMA, потом АЦП, то есть
MX_GPIO_Init();
MX_DMA_Init();
MX_ADC1_Init();
MX_TIM1_Init(); так работает,
MX_GPIO_Init();
MX_ADC1_Init();
MX_DMA_Init();
MX_TIM1_Init(); так не работает, хотя куб делает именно второй вариант. Может кому то будет полезна данная информация.
так не работает, хотя куб делает именно второй вариант. Может кому то будет полезна данная информация.
Этот глюк у ST описан. Что бы этого не происходило, нужно в CubeMX включать DMA, а потом устройство, которое будет с ним работать. Если не получается, генерить так, а потом переставлять строки.
Но при каждой перегенерации Куб снова поменяет строки местами.
И не всегда код сгенерённый Кубом, при использовании DMA будет работать. Придётся ручками работать с регистрами.
@uhbif79 Интересно, а можете проект выложить с проблемой, там где ацп перестает работать после включения таймера?
Может версия старая? У меня генерирует:
/* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_ADC1_Init(); MX_USART1_UART_Init(); MX_USART2_UART_Init(); MX_USART3_UART_Init(); MX_IWDG_Init(); /* USER CODE BEGIN 2 */
@aveal если быть точным ацп как раз работает, по крайней мере прерывания вызываются, не работало DMA. Версия программы CubeIde 1.6.1 думаю не самая последняя. Но в общем то проблема я понял в чем была, руками можно поправить и все.
Версия программы CubeIde 1.6.1
Уже давно есть CubeIDE 1.13.1