STM32F103C8T6 PWM Output uygulamasını yapamadım, hatam nerede ?

Başlatan GaGuLi, 21 Mayıs 2016, 13:52:39

GaGuLi

Stm32f103c8t6 işlemcisi ile PWM output uygulaması yapmaya çalışıyorum ama register ile kod yazmaya yeni başladığım için atladığım noktalar oluyor sanırım. Yazdığım kodlar şu şekilde :

#include "stm32f10x.h"

#define STM32F10X_MD
/* Medium Density işlemcimizde TIM 1,2,3,4 zamanlayıcılarını kullanabiliyoruz.Datasheet'deki açıklamalara bakınız. Sf 471 */

void RCC_ClockConfig_Routine(void)
{
    SystemInit();
    
    RCC->APB2ENR |=RCC_APB2ENR_IOPCEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN ; //a ve c aktif
    
        GPIOC->CRH  = 0x00300000; // c13 output
        GPIOA->CRH |= 0xB0000000; // a15 Alternate function and push pull
        AFIO->MAPR |= AFIO_MAPR_TIM2_REMAP_FULLREMAP;

}

void TIM_Config_Routine(void)
{
        RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // TIM2 CLOCK ENABLE 0x00000001;

        TIM2->CR1|=TIM_CR1_ARPE; // ARPE BIT IS SET
        TIM2->PSC=36000-1; // PRESCALER DEĞERİ 3600
        TIM2->ARR=2000;  // ARR PERIYOT DEĞERİ 2000
        TIM2->CCR1 = 1000; // %50 PWM

        TIM2->CCMR1 |= TIM_CCMR1_OC1M | TIM_CCMR1_OC1PE ; // PWM MODE 2

        TIM2->CCER |= TIM_CCER_CC1E ; // CAPTURE COMPARE 1 ENABLE

        TIM2->CR1|=TIM_CR1_CEN; // COUNTER ENABLE PINI SET EDILDI

}

int main(void)
{
RCC_ClockConfig_Routine();
TIM_Config_Routine();

    while(1)
    {
    }
}


Kodlarım çalışmıyor şuan eksiklerim nerede tam anlayamadım. Bu konuda yardımlarınızı beliyorum

GaGuLi

Hatamı buldum CRH registerini 0xb0000000 ile maskelerken dikkatimden kaçan bir durum olmuş. Son 4 biti 1011 yapmak istiyodum o registerin defult değeri 0100 olduğu için son değer 1111 oluyodu. Değeri maskelemeden yazınca hata durumu ortadan kalktı :)

rree

Kullandığın dil nedir. Bende yavaş yavaş arm ye geçeceğim.

GaGuLi

Kullandigim programlama dili C programlama dili. ARM tabanli islemcilere gececeksen bulent hocamizin dersleri ve C dilinde șamatalari takip edebilirsin