Stm32f4 TİM9 PWM YARDIM

Başlatan Kaanx, 12 Şubat 2013, 17:18:13

Kaanx

#include "STM32F4xx.h"

//void SystemInit(void)
//{

   //unsigned int i;
   //   for(i=0;i<0x00100000;i++);
   //   RCC->CFGR|=0X00009400;
   //   RCC->CR|=0X00010000;
   //   while(!(RCC->CR & 0X00020000));
   //   RCC->PLLCFGR=0X07405408;
   //   RCC->CR|=0X01000000;
   //   while(!(RCC->CR & 0X00020000));
   //   FLASH->ACR = 0x00000605;
   //    RCC->CFGR |= 0x00000002;
   //    while ((RCC->CFGR & 0x0000000F) != 0x0000000A);
   //    RCC->AHB1ENR |= 0x0000000F;
   //    GPIOD->MODER = 0x55550000; // 15 14 13 12 11 10 9 8 cıkıs
   //    GPIOD->OSPEEDR= 0x00000000;//cıkıs hızı 2mhz


//}
void TIM9_IRQHandler()
{
   static char ledflag;
   TIM9->SR=0X00000000;// KESME BAYRAGI TEMIZLENIYOR.
   ledflag=(ledflag+1)&1;
   if(ledflag) GPIOD->ODR=0X000F000;
   else GPIOD->ODR=0X00000000;
}

int main()
{
   RCC->APB2ENR=0X00070000; // TIM 11 TIM 10 TIM 9 YOLU ACIK 84 MHZ;
   TIM9->EGR=0X00000001; //SAYICI TEMİZLENİR
   TIM9->CCMR1=0X00000068;//PWM CIKIS MODE 1 CCR1 DEGERI ENABLE
   TIM9->CR1=0X0080; //ARPE VE COUNTER(CEN)  SET EDİLDİ
   TIM9->ARR=1; // COUNTER 2000 OLUNCA BASA DÖN
   TIM9->CCR1=333;
   TIM9->PSC=42000-1; // PERIYOT 1 SN

   TIM9->CCER=0X03;// CIKISLAR AKTIF
   TIM9->DIER=0x0002;

    NVIC->ISER[1] = 0XFFFFFFFF;
    TIM9->CR1|=0X0001;

   while(1);




}


KODU BU SEKILDE YAZDM OLUSTURDUGUM PWM DOLULUGU ILE LEDLERI YAKIP SONDURMEK ISTIYORUM AMA CALISMIYOR CIKISLARA LOGIC ANALYZER BAGLADIM CIKISLARDADA SINYAL YOK. NEREDE HATAM VAR YARDIMCI OLURSANZ SEVINIRIM.

GreeN

SystemInit kodlarını neden çıkardın ?
Terörü Lanetliyoruz.

veyselevran

PWM çıkışları için portları aktif etmemişsin. E5 ve E6 yı alternative function olarak ata ve PWM çıkışı olara AF ayarı yap.

Kaanx

Alıntı yapılan: GreeN - 12 Şubat 2013, 19:21:40
SystemInit kodlarını neden çıkardın ?
ATOLLİC TE DEBUG HATASI ALIYORDUM SYSTEMINIT DOSYALARINI system_stm32f4.c YE TANIMLIYORUM ORDAKILERİ SİLİP VE MAİN.C DEKILERİ İPTAL EDIYORUM YOKSA 2 KEZ CAGIRLDI DIYE HATA VERIYOR.

Kaanx

Alıntı yapılan: veyselevran - 12 Şubat 2013, 19:31:08
PWM çıkışları için portları aktif etmemişsin. E5 ve E6 yı alternative function olarak ata ve PWM çıkışı olara AF ayarı yap.

D PORTU AKTIF 15 14 13 12 11 10 9 8 CIKIS OLARAK TANIMLAMISTIM. PWM ICIN AYRI BİR CIKIS TANIMLAMAM MI GEREK OUT OLARAK BELİRTMİŞTİM. AF AYARINI YAPMAMISIM EVET ONU İNCELEYIP KODU TEKRAR PAYLASICAM.

Kaanx

#5
KODU SU SEKILDE DUZENLEDİM AMA HALA CIKIS GÖREMIYORUM LOGIC ANALYZERDE VE LEDLERDE


#include "STM32F4xx.h"

//void SystemInit(void)
//{

   //unsigned int i;
   //   for(i=0;i<0x00100000;i++);
   //   RCC->CFGR|=0X00009400;
   //   RCC->CR|=0X00010000;
   //   while(!(RCC->CR & 0X00020000));
   //   RCC->PLLCFGR=0X07405408;
   //   RCC->CR|=0X01000000;
   //   while(!(RCC->CR & 0X00020000));
   //   FLASH->ACR = 0x00000605;
   //    RCC->CFGR |= 0x00000002;
   //    while ((RCC->CFGR & 0x0000000F) != 0x0000000A);
   //    RCC->AHB1ENR |= 0x0000001F ; // a b c d e port clock aktıf
   //    GPIOD->MODER = 0x55550000; // 15 14 13 12 11 10 9 8 cıkıs
   //    GPIOD->OSPEEDR= 0x00000000;//cıkıs hızı 2mhz
   // GPIOE->MODER=0X00000500; E5 E6 CIKIS TIM9 ICIN
   // GPIOE->OSPEEDR=0X00000000;//2MHZ CIKIS HIZI

//}


int main()
{
   RCC->APB2ENR|=0X00070000; // TIM 11 TIM 10 TIM 9 YOLU ACIK 84 MHZ;

   TIM9->CR1=0X0080; //ARPE VE COUNTER(CEN)  SET EDİLDİ
   TIM9->ARR=0X00F9; // COUNTER 249 OLUNCA BASA DÖN(PERYOD)
   TIM9->PSC=839-1; //
   TIM9->EGR=0X00000001; //SAYICI TEMİZLENİR

   TIM9->CCMR1|=0X00000060;//PWM CIKIS MODE 1
   TIM9->CCER|=0X0001;//CC1E AKTIF
   TIM9->CCER|=0X0002;// CIKISLAR AKTIF LOW CIKIS CC1P
   TIM9->CCR1   = 0x007D;   //Pulse = 125
   TIM9->CCMR1|=0x0008;//PRELOAD AKTF


   TIM9->CR1 |= 0x0001;
   GPIOE->AFR[1]|=0X33333333;

   while(1);

   {
      if(TIM9->CNT & 0X0001) GPIOD->ODR=0x0000F000;//CNT YE DEGISKEN GELIYOSA LEDLER YANSIN
      else GPIOD->ODR=0X00000000;
   }



}