Алексей ВМ 0 14 июня, 2018 Опубликовано 14 июня, 2018 · Жалоба Добрый день, Помогите, плиз. Имеется мк STM32F407, внешний кварц 25МГц. Хочу получить от таймера 3 ШИМ 125 кГц. Инициализация: TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Prescaler = ((SystemCoreClock / 4000000) - 1); TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period = 8 - 1; // 8 us TIM_TimeBaseInit(RF_125KHZ_TIM, &TIM_TimeBaseStructure); TIM_OCStructInit(&TIM_OCInitStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 4; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC3Init(RF_125KHZ_TIM, &TIM_OCInitStructure); TIM_OC3PreloadConfig(RF_125KHZ_TIM, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(RF_125KHZ_TIM,ENABLE); TIM_Cmd(RF_125KHZ_TIM, ENABLE); SystemCoreClock равна 168 МГц. Частота шины APB1, на которой сидит TIM3, 42 МГц. На выходе шим с периодом 4 мкс. Что я делаю не так, куда копать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 14 июня, 2018 Опубликовано 14 июня, 2018 · Жалоба Что я делаю не так Не внимательно изучаете документацию. Если прескалер APBx не равен 1, то частота на таймеры в два раза выше APBx. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алексей ВМ 0 14 июня, 2018 Опубликовано 14 июня, 2018 · Жалоба Не внимательно изучаете документацию. Если прескалер APBx не равен 1, то частота на таймеры в два раза выше APBx. У меня такая картинка из RM, цифры сбиты Благодарю за помощь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться