Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: MaybeNextTime - 26 Eylül 2018, 16:41:12

Başlık: STM32F103 AF Sorunu
Gönderen: MaybeNextTime - 26 Eylül 2018, 16:41:12
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);
}
}