ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
597215
danuna (08.05.2015 20:09, просмотров: 5592)
Отцы, спасите, я на грани нервного срыва.  Имеются три платы stm32f103 vbt,vct и rbt. Пытаюсь запустить ШИМ на 4-м таймере. На rbt все работает, на vct и vbt глухой ноль на выходах. Если сменить 4й таймер на 3ий, то на vct vbt код начинает работать (естесственно в ините меняю ноги каналов ШИМа). Чем отличаются 3ий таймер от 4го? Кстати, светодиод в прерывании таймера исправно мигает, то есть тактирование ок, но шим молчит. Два дня уже в трех соснах путаюсь. В еррате про таймеры ничего нет. Скорее всего что-нибудь забыл включить, но тогда бы код нигде не работал. Инит: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1 , ENABLE); // pwm out TIM4 Ch */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15| GPIO_Pin_14| GPIO_Pin_13| GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; // GPIO_Init(GPIOD, &GPIO_InitStructure); void TIM_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_BaseInitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_DeInit( TIM4); // RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); // TIM_BaseInitStructure.TIM_Period = 500; // TIM_BaseInitStructure.TIM_Prescaler = 71; // TIM_BaseInitStructure.TIM_ClockDivision = 0; TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;// TIM_BaseInitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM4, &TIM_BaseInitStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 200; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM4, &TIM_OCInitStructure); TIM_OC2Init(TIM4, &TIM_OCInitStructure); TIM_OC3Init(TIM4, &TIM_OCInitStructure); TIM_OC3Init(TIM4, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM4, ENABLE); TIM_ClearFlag(TIM4, TIM_FLAG_Update); TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); TIM_Cmd(TIM4, ENABLE); }