Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Не работает таймер TIM2 на STM32F103C6R6 где ошибка?

Чт ноя 22, 2018 23:37:14

Не работает таймер TIM2 (TIM3 тоже) на STM32F103C6R6 где ошибка?

(пытался приспособить код от STM32F103C8 отсюда: http://www.avislab.com/blog/stm32-tim_basic_ru/)

main.h


main.cpp


Проект целиком: https://yadi.sk/d/uQz3218sFd4L8Q

Re: Не работает таймер TIM2 на STM32F103C6R6 где ошибка?

Чт ноя 22, 2018 23:47:56

Переименуй файл в main.c, раз уж все равно пишешь на С. Или добавь extern "C" для обработчика прерывания.

Re: Не работает таймер TIM2 на STM32F103C6R6 где ошибка?

Пт ноя 23, 2018 00:52:53

Сделал так:
Код:
extern "C" void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
  {       
  TIM_ClearITPendingBit(TIM2, TIM_IT_Update); // Обязательно сбрасываем флаг
  GPIOC->ODR ^= GPIO_Pin_13;
  }
}


ничего не изменилось, проблема осталась.

Добавлено after 29 minutes 37 seconds:
Хотя нет, изменилось в железе заработало, в Протеусе нет!

Правда, что то быстро светодиод мигает на PC13, он же должен зажигаться на 0,5 сек а получается раз в 6...10 быстрее, почему?

Re: Не работает таймер TIM2 на STM32F103C6R6 где ошибка?

Пт ноя 23, 2018 00:57:31

ничего не изменилось, проблема осталась.

Простой вопрос, у тебя исполнение кода вообще хотя бы до инициализации таймеров доходит?

Добавлено after 2 minutes 36 seconds:
Хотя нет, изменилось в железе заработало, в Протеусе нет!

FLASH_SetLatency() зачем закомментил если PLL включаешь? Странно, что оно в принципе работает...

Добавлено after 1 minute 51 second:
Правда, что то быстро светодиод мигает на PC13, он же должен зажигаться на 0,5 сек а получается раз в 6...10 быстрее, почему?

72_000_000 / (8000 * 500) = 18

Re: Не работает таймер TIM2 на STM32F103C6R6 где ошибка?

Пт ноя 23, 2018 01:06:51

Спасибо!

Кстати #include "misc.h" я тоже раскоментировал, не понимаю как вообще код скомпилировался без ошибок если NVIC_InitTypeDef прописано только в нём.
Ответить