Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

STM32F103 AF Sorunu

Başlatan MaybeNextTime, 26 Eylül 2018, 16:41:12

MaybeNextTime

Merhabalar arkadaşlar. ARM'ye yeni giriş yapan biri olarak video izleyerek yavaş yavaş öğrenmeye başlıyorum o yüzden takıldığım bir problem var. Baya araştırdım ama çözemedim. Stm32f103 kartıyla Timer sayıcısıyla PWM kullanarak led yakmaya çalışıyorum. Kodları hallettim GPIO ve TIM1 kodlarını fakat GPIOA'nın çıkış pinlerini TIM1 channellarına tanıtacak bir kod var GPIO_PinAfConfig(GPIOA, GPIO_Source8, GPIO_AF_TIM1); diye ama Stm32f103 ün GPIO kütüphanesinde bu yok. Stm32f407'de var. Ben bunu Stm32f103'te hangi kodla yapıcam bir türlü işin içinden çıkamadım. Yardımcı olursanız çok sevinirim. Teşekkürler şimdiden hepinize.Yazdığım kodları da aşağıda paylaşıyorum.

#include "stm32f10x.h"                  // Device header
#include "stm32f10x_gpio.h"             // Keil::Device:StdPeriph Drivers:GPIO
#include "stm32f10x_tim.h"              // Keil::Device:StdPeriph Drivers:TIM
#include "stm32f10x_rcc.h"              // Keil::Device:StdPeriph Drivers:RCC

int main()
{
	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_OCInitTypeDef TIM_OCStruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Pin= GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,GPIO_InitStructure);
	
	TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
	TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
	TIM_TimeBaseInitStructure.TIM_Prescaler=3599; 
	TIM_TimeBaseInitStructure.TIM_Period=9999; 
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;
	TIM_TimeBaseInit(TIM2,TIM_TimeBaseInitStructure);
	TIM_Cmd(TIM2,ENABLE);
	
	TIM_OCStruct.TIM_OCMode=TIM_OCMode_PWM1;
	TIM_OCStruct.TIM_OCPolarity=TIM_OCPolarity_High;
	TIM_OCStruct.TIM_OutputState=TIM_OutputState_Enable;
	
  while(1)
	{
		TIM_OCStruct.TIM_Pulse=2499;//%25 duty cycle
		TIM_OC1Init(TIM2,TIM_OCStruct);
		TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);
		
		TIM_OCStruct.TIM_Pulse=4999;//%50 duty cycle
		TIM_OC1Init(TIM2,TIM_OCStruct);
		TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);
		
		TIM_OCStruct.TIM_Pulse=7499;//%75 duty cycle
		TIM_OC1Init(TIM2,TIM_OCStruct);
		TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);
		
		TIM_OCStruct.TIM_Pulse=9999;//%100 duty cycle
		TIM_OC1Init(TIM2,TIM_OCStruct);
		TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);
	}
}