MasteR_PuppetS Napisano Sierpień 7, 2015 Udostępnij Napisano Sierpień 7, 2015 Hail! Zachodzę w głowę, dlaczego PWM działa tylko na PD13, a na PD12,14,15 juz nie ? Zechciałby ktoś wyjaśnić? Byłbym wdzięczny. #include "stm32f30x.h" #include "stm32f3_discovery.h" #include "stm32f30x_tim.h" GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_InitStructure; TIM_OCInitTypeDef TIM_OCStruct; int main(void) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE); //Clock for GPIOD /*Alternating functions for pins*/ GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_2); GPIO_PinAFConfig(GPIOD, GPIO_PinSource13, GPIO_AF_2); GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_2); GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_2); /* Set pins */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStructure); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); // Enable clock for TIM4 TIM_InitStructure.TIM_Prescaler = 0; TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_InitStructure.TIM_Period = 8399; TIM_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_InitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM4, &TIM_InitStructure); TIM_Cmd(TIM4, ENABLE); TIM_OCStruct.TIM_OCMode = TIM_OCMode_PWM2; TIM_OCStruct.TIM_OutputState = TIM_OutputState_Enable; TIM_OCStruct.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OCStruct.TIM_Pulse = 4199; /* 50% duty cycle */ TIM_OC2Init(TIM4, &TIM_OCStruct); TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable); GPIO_SetBits(GPIOD, GPIO_Pin_12); GPIO_SetBits(GPIOD, GPIO_Pin_13); GPIO_SetBits(GPIOD, GPIO_Pin_14); GPIO_SetBits(GPIOD, GPIO_Pin_15); while(1) { } } Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Sierpień 7, 2015 Udostępnij Sierpień 7, 2015 Uruchamiasz tylko 2 kanał PWM-a: TIM_OC2Init(TIM4, &TIM_OCStruct); TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable); Więc na PD13 jest synał. Dodaj jeszcze wywołania dla pozostałych kanałów i powinno być ok. 1 Cytuj Link do komentarza Share on other sites More sharing options...
MasteR_PuppetS Sierpień 7, 2015 Autor tematu Udostępnij Sierpień 7, 2015 Dzięki!! Tak to jest, jak się próbuje zrobić coś nie do końca rozumiejąc, ale takie są konsekwencje bycia początkującym 🙂 Dzięki raz jeszcze 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!