Цитата(Auratos @ May 29 2018, 15:25)

Добрый день. У меня контроллер STM32F107RCT6. Хочу сделать тактовый генератор на таймере TIM1 (на 1-й канал выдавать частоту). Вроде все инициализировал (таймер, ножку PA8 для Ch1), а на ножке все равно глухо. Частота кварца 72MГц. Т.е. при текущей настройке на выходе должна быть частота 100Гц. Подскажите, пожалуйста, в чем может быть загвоздка? С контроллером серии STM32L100 у меня получалось, там просто некоторые структуры библиотечные выглядят немного иначе. А вот с этим контроллером никак
Ну у меня делается, например, так:
Код
void HW_TIM_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_Configure;
TIM_Configure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_Configure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_Configure.TIM_Period = 100 - 1;
TIM_Configure.TIM_Prescaler = 90 - 1;
TIM_Configure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_Configure);
TIM_OCInitTypeDef TIM_OC_Configure;
TIM_OC_Configure.TIM_OCMode = TIM_OCMode_Toggle;
TIM_OC_Configure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OC_Configure.TIM_OutputNState = TIM_OutputNState_Disable;
TIM_OC_Configure.TIM_Pulse = 0;
TIM_OC_Configure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC_Configure.TIM_OCNPolarity = TIM_OCNPolarity_High;
TIM_OC_Configure.TIM_OCIdleState = TIM_OCIdleState_Reset;
TIM_OC_Configure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
TIM_OC1Init(TIM2, &TIM_OC_Configure);
TIM_SetCompare1(TIM2, 30);
TIM_CCxCmd(TIM2, TIM_Channel_1, TIM_CCx_Enable);
return;
}
После этого включаем таймер и поехали.
Ключевой момент - установить значение сравнения TIM_SetCompare1(TIM2, ...) и включить сам канал захвата/сравнения TIM_CCxCmd(TIM2, TIM_Channel_1, TIM_CCx_Enable).