ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
810906
Звероящер (21.01.2018 01:33 - 11:12, просмотров: 7853)
Странности с таймером TIM1 STM32. Проблема закрыта, всем спасибо. ЗЫ. У нас -43 утром В общем обкурился мануалом до тошноты, а всё равно толку нет. Короче, надо гнать меандр с помощью TIM1 в режиме сравнения. Инициализирую вот так: RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; TIM1->PSC = 1; TIM1->CNT = 0; TIM1->ARR = 40000; TIM1->CCR1 = 512; TIM1->CCMR1 |= (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0); TIM1->CCER |= (TIM_CCER_CC1P | TIM_CCER_CC1E); TIM1->BDTR |= TIM_BDTR_MOE; TIM1->EGR |= TIM_EGR_UG; TIM1->SR &= ~TIM_SR_UIF; // HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0); // HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); // TIM1->DIER |= TIM_DIER_CC1IE; TIM1->CR1 |= TIM_CR1_CEN; На всякий случай отдельный обработчик прерывания по сравнению void TIM1_CC_IRQHandler(void) { TIM1->SR = 0; } Запускаю, и меандр гонится с частотой переполнения счётчика, когда значение счётчика CNT становится равным ARR. Самое что интересное - флаг по сравнению выставляется, в прерывание попадаю, а нога от этого не шевелится. Только от переполнения счётчика. Чёзахрень?