Picproje Elektronik Sitesi

PICPROJE PROGRAMLAMA DERSLERİ => STM32 Örnekleri => Konuyu başlatan: Klein - 20 Ocak 2012, 03:07:56

Başlık: STM32F4xx TIMER Init kütüphanesi
Gönderen: Klein - 20 Ocak 2012, 03:07:56
/**
  ******************************************************************************
  * @dosya    stm32f4xx_TIMER.h
  * @yazar  Picproje
  * @version V1.0.0
  * @date    19.01.2012
  * @özet    STM32F4 - Cortex-M4 TIMER register tanımlamaları.
  * STM32F4xx.h tanım dosyası ile birlikte kullanılır. tek başına kullanılmaz.
  * register isimlendirmelerinde STM32F4xx.h ve ilgili dokümanlardaki isimlendirmelere
  * sadık kalınmaya çalışılmıştır.
  * @revizyon geçmişi
  * V1.0.0 16.01.2012  Başlangıç. TIM registerlerine ilişkin tanımlamalar.
  * V1.0.1  21.01.2012  T_Tmr_CCER_Type tipi union yapıldı. Tüm bitlere erişim için
  *                     CCER isimli uint16_t tipinde üye eklendi.
  * V1.1.1 22.01.2012  T_Tmr_CCR_Type union tipi eklendi. CCR registerlerini
  array ve ayrık olarak kullanabilme opsiyonu sağlandı.
  ******************************************************************************
  */

#ifndef __STM32F4XX_TIMER
#define __STM32F4XX_TIMER

#include "STM32F4xx.h"

enum TMR_CR1 { TMR_CKD_DIVTCKINT =0, TMR_CKD_DIV2TCKINT = 1, TMR_CKD_DIV4TCKINT,
   TMR_ARPE_PRELOAD=0, TMR_ARPE_NOTPRELOAD=1,
   TMR_CMS_ALIGNEDGE =0, TMR_CMS_ALIGNMODE1 =1, TMR_CMS_ALIGNMODE2=2, TMR_CMS_ALIGNMODE3 =3,
   TMR_DIR_UPCOUNT=0, TMR_DIR_DOWNCOUNT = 1,
   TMR_OPM_CONTINIOUS =0, TMR_OPM_ONEPULSE =1,
   TMR_URS_UPDATE_ANY_SOURCE =0, TMR_URS_UPDATEONLY_CNTR,
   TMR_UDIS_UPDATE_EVENT_DISABLE =0, TMR_UDIS_UPDATE_EVENT_ENABLE =1,
   TMR_COUNTER_DISABLE = 0, TMR_COUNTER_ENABLE =1
};
enum TMR_CR2 { TMR_TI1S_TI1IN_CH1 =0, TMR_TI1S_TI1IN_XOR_CH123 =1,
   TMR_MMS_MASTER_RESET =0, TMR_MMS_MASTER_ENABLE =1, TMR_MMS_MASTER_UPDATE =2, TMR_MMS_MASTER_CMP_PULSE =3,
   TMR_MMS_MASTER_CMP_OC1REF =4, TMR_MMS_MASTER_CMP_OC2REF =5, TMR_MMS_MASTER_CMP_OC3REF =6, TMR_MMS_MASTER_CMP_OC4REF =7,
};

enum TMR_SMCR{ TMR_MSM_NO_ACTION =0, TMR_MSM_EFFECT_EVENT,
TMR_TS_INTERNAL_TRG_ITR1 =1, TMR_TS_INTERNAL_TRG_ITR2 =2,
TMR_TS_EDGE_DETECT_TI1F_ED =4,
TMR_TS_FLTR_IN1_TI1FP1 =5, TMR_TS_FLTR_IN2_TI2FP2 =6,
TMR_TS_EXTERNAL_TRG_ETRF =7,
TMR_SMS_SLAVE_DISABLE =0,
TMR_SMS_ENCODER_MODE1 =1, TMR_SMS_ENCODER_MODE2 =2, TMR_SMS_ENCODER_MODE3 =3,
TMR_SMS_RESET_MODE =4, TMR_SMS_GATED_MODE =5, TMR_SMS_TRG_MODE =6, TMR_SMS_EXTERNAL_CLK =7
};

enum TMR_DIER { TMR_TDE_TRG_DMAREQ_DISABLE =0, TMR_TDE_TRG_DMAREQ_ENABLE =1,
TMR_CC4DE_DMAREQ_DISABLE =0, TMR_CC4DE_DMAREQ_ENABLE =1,
TMR_CC3DE_DMAREQ_DISABLE =0, TMR_CC3DE_DMAREQ_ENABLE =1,
TMR_CC2DE_DMAREQ_DISABLE =0, TMR_CC2DE_DMAREQ_ENABLE =1,
TMR_CC1DE_DMAREQ_DISABLE =0, TMR_CC1DE_DMAREQ_ENABLE =1,
TMR_UDE_UPDATE_DMAREQ_DISABLE =0, TMR_UDE_UPDATE_DMAREQ_ENABLE=1,
TMR_TIE_TRG_IRQ_DISABLE =0, TMR_TIE_TRG_IRQ_ENABLE =1,
TMR_CC4IE_IRQ_DISABLE =0, TMR_CC4IE_IRQ_ENABLE =1,
TMR_CC3IE_IRQ_DISABLE =0, TMR_CC3IE_IRQ_ENABLE =1,
TMR_CC2IE_IRQ_DISABLE =0, TMR_CC2IE_IRQ_ENABLE =1,
TMR_CC1IE_IRQ_DISABLE =0, TMR_CC1IE_IRQ_ENABLE =1,
TMR_UIE_UPDATE_IRQ_DISABLE =0, TMR_UIE_UPDATE_IRQ_ENABLE =1
  };

enum TMR_EGR  { TMR_UG_UPDATE_NOACT =0, TMR_UG_UPDATE_REINIT =1};

enum TMR_CCMR{ TMR_OCM_FROZEN =0,
TMR_OCM_MATCH_ACTIVE =1, TMR_OCxM_MATCH_INACTIVE =2,
TMR_OCM_TOGGLE =3,
TMR_OCM_FORCE_INACTIVE =4,
TMR_OCM_FORCE_ACTIVE =5,
TMR_OCM_PWM_MODE1 =6 , TMR_OCxM_PWM_MODE2 =7,
TMR_OCPE_PRELOAD_DISABLE =0, TMR_OCPE_PRELOAD_ENABLE =1,
TMR_OCFE_FAST_DISABLE =0, TMR_OCFE_FAST_ENABLE =1,
TMR_CCS_CH_OUTPUT =0, TMR_CCS_CH_IN_TI1 =1, TMR_CCS_CH_IN_TI2 =2, TMR_CCS_CH_IN_TRC =3,
TMR_ICF_FILTER_NONE =0,
TMR_ICPSC_PRESCALE_NONE =0,
TMR_ICPSC_PRESCALE_2EVENTS =1,
TMR_ICPSC_PRESCALE_4EVENTS =2,
TMR_ICPSC_PRESCALE_8EVENTS =3,
};

enum TMR_CCER{ TMR_CCNP_IC_SINGLE_EDGE =0, TMR_CCNP_IC_BOTH_EDGE =1,
TMR_CCP_OC_ACTIVE_HI =0, TMR_CCP_OC_ACTIVE_LOW =1,
TMR_CCP_IC_NONINVERT_RISING =0, TMR_CCP_IC_INVERT_FALLING =1, TMR_CCP_IC_NONINVERT_BOTH =1,
TMR_CCE_OC_UNACTIVE =0, TMR_CCE_OC_ACTIVE =1,
TMR_CCE_IC_DISABLE =0, TMR_CCE_IC_ENABLE =1
  };

#define TMR1                ((TIMER_TypeDef *) TIM1_BASE)
#define TMR2                ((TIMER_TypeDef *) TIM2_BASE)
#define TMR3                ((TIMER_TypeDef *) TIM3_BASE)
#define TMR4                ((TIMER_TypeDef *) TIM4_BASE)
#define TMR5                ((TIMER_TypeDef *) TIM5_BASE)
#define TMR6                ((TIMER_TypeDef *) TIM6_BASE)
#define TMR7                ((TIMER_TypeDef *) TIM7_BASE)
#define TMR8                ((TIMER_TypeDef *) TIM8_BASE)
#define TMR9                ((TIMER_TypeDef *) TIM9_BASE)
#define TMR10                ((TIMER_TypeDef *) TIM10_BASE)
#define TMR11                ((TIMER_TypeDef *) TIM11_BASE)
#define TMR12                ((TIMER_TypeDef *) TIM12_BASE)
#define TMR13                ((TIMER_TypeDef *) TIM13_BASE)
#define TMR14                ((TIMER_TypeDef *) TIM14_BASE)


#pragma anon_unions

typedef struct{
  __IO uint16_t CEN:1;
  __IO uint16_t UDIS:1;
  __IO uint16_t URS:1;
  __IO uint16_t OPM:1;
  __IO uint16_t DIR:1;
  __IO uint16_t CMS:2;
  __IO uint16_t ARPE:1;
  __IO uint16_t CKD:2;
  __IO uint16_t :6;

} T_Tmr_CR1_Type;

typedef struct{
  __IO uint16_t :3;
  __IO uint16_t CCDS:1;
  __IO uint16_t MMS:3;
  __IO uint16_t TI1S:1;
  __IO uint16_t :8;
} T_Tmr_CR2_Type;

typedef struct{
  __IO uint16_t SMS:3;
  __IO uint16_t :1;
  __IO uint16_t TS:3;
  __IO uint16_t MSM:1;
  __IO uint16_t ETF:4;
  __IO uint16_t ETPS:2;
  __IO uint16_t ECE:1;
  __IO uint16_t ETP:1;
} T_Tmr_SMCR_Type;

typedef struct{
  __IO uint16_t UIE:1;
  __IO uint16_t CC1IE:1;
  __IO uint16_t CC2IE:1;
  __IO uint16_t CC3IE:1;
  __IO uint16_t CC4IE:1;
  __IO uint16_t :1;
  __IO uint16_t TIE:1;
  __IO uint16_t :1;
  __IO uint16_t UDE:1;
  __IO uint16_t CC1DE:1;
  __IO uint16_t CC2DE:1;
  __IO uint16_t CC3DE:1;
  __IO uint16_t CC4DE:1;
  __IO uint16_t :1;
  __IO uint16_t TDE:1;
  __IO uint16_t :1;
} T_Tmr_DIER_Type;

typedef struct{
  __IO uint16_t UIF:1;
  __IO uint16_t CC1IF:1;
  __IO uint16_t CC2IF:1;
  __IO uint16_t CC3IF:1;
  __IO uint16_t CC4IF:1;
  __IO uint16_t :1;
  __IO uint16_t TIF:1;
  __IO uint16_t :2;
  __IO uint16_t CC1OF:1;
  __IO uint16_t CC2OF:1;
  __IO uint16_t CC3OF:1;
  __IO uint16_t CC4OF:1;
  __IO uint16_t :3;
} T_Tmr_SR_Type;

typedef struct{
  __IO uint16_t UG:1;
  __IO uint16_t CC1G:1;
  __IO uint16_t CC2G:1;
  __IO uint16_t CC3G:1;
  __IO uint16_t CC4G:1;
  __IO uint16_t :1;
  __IO uint16_t TG:1;
  __IO uint16_t :9;
} T_Tmr_EGR_Type;

typedef struct{
  __IO uint16_t CC1S:2;
  __IO uint16_t OC1FE:1;
  __IO uint16_t OC1PE:1;
  __IO uint16_t OC1M:3;
  __IO uint16_t OC1CE:1;
  __IO uint16_t CC2S:2;
  __IO uint16_t OC2FE:1;
  __IO uint16_t OC2PE:1;
  __IO uint16_t OC2M:3;
  __IO uint16_t OC2CE:1;
}T_Tmr_CCMR1_OC_Type;

typedef struct{
  __IO uint16_t CC1S:2;
  __IO uint16_t IC1PSC:2;
  __IO uint16_t IC1F:4;
  __IO uint16_t CC2S:2;
  __IO uint16_t IC2PSC:2;
  __IO uint16_t IC2F:4;
}T_Tmr_CCMR1_IC_Type;

typedef struct{
  __IO uint16_t CC3S:2;
  __IO uint16_t OC3FE:1;
  __IO uint16_t OC3PE:1;
  __IO uint16_t OC3M:3;
  __IO uint16_t OC3CE:1;
  __IO uint16_t CC4S:2;
  __IO uint16_t OC4FE:1;
  __IO uint16_t OC4PE:1;
  __IO uint16_t OC4M:3;
  __IO uint16_t OC4CE:1;
}T_Tmr_CCMR2_OC_Type;

typedef struct{
  __IO uint16_t CC3S:2;
  __IO uint16_t IC3PSC:2;
  __IO uint16_t IC3F:4;
  __IO uint16_t CC4S:2;
  __IO uint16_t IC4PSC:2;
  __IO uint16_t IC4F:4;
}T_Tmr_CCMR2_IC_Type;

typedef union{
T_Tmr_CCMR1_OC_Type OCR;
T_Tmr_CCMR1_IC_Type ICR;
}T_Tmr_CCMR1_Type;

typedef union{
T_Tmr_CCMR2_OC_Type OCR;
T_Tmr_CCMR2_IC_Type ICR;
}T_Tmr_CCMR2_Type;

typedef union{
  __IO uint16_t CCER;
struct{
  __IO uint16_t CC1E:1;
  __IO uint16_t CC1P:1;
  __IO uint16_t :1;
  __IO uint16_t CC1NP:1;
  __IO uint16_t CC2E:1;
  __IO uint16_t CC2P:1;
  __IO uint16_t :1;
  __IO uint16_t CC2NP:1;
  __IO uint16_t CC3E:1;
  __IO uint16_t CC3P:1;
  __IO uint16_t :1;
  __IO uint16_t CC3NP:1;
  __IO uint16_t CC4E:1;
  __IO uint16_t CC4P:1;
  __IO uint16_t :1;
  __IO uint16_t CC4NP:1;
  };
}T_Tmr_CCER_Type;

typedef struct{
  __IO uint16_t DBA:4;
  __IO uint16_t :3;
  __IO uint16_t DBL:4;
  __IO uint16_t :3;
}T_Tmr_DCR_Type;

typedef struct{
  __IO uint16_t :10;
  __IO uint16_t ITR1_RMP:2;
  __IO uint16_t :4;
}T_Tmr_TIM2OR_Type;

typedef struct{
  __IO uint16_t :6;
  __IO uint16_t TI4_RMP:2;
  __IO uint16_t :8;
}T_Tmr_TIM5OR_Type;

typedef union{
T_Tmr_TIM2OR_Type TIM2OR;
T_Tmr_TIM5OR_Type TIM5OR;
}T_Tmr_OR_Type;

typedef union{
__IO uint32_t CCR[4];
__IO uint32_t CCR1;
__IO uint32_t CCR2;
__IO uint32_t CCR3;
__IO uint32_t CCR4;
}T_Tmr_CCR_Type;




typedef struct
{
  T_Tmr_CR1_Type CR1;         /*!< TIM control register 1,              Address offset: 0x00 */
  uint16_t      RESERVED0;   /*!< Reserved, 0x02                                            */
  T_Tmr_CR2_Type CR2;         /*!< TIM control register 2,              Address offset: 0x04 */
  uint16_t      RESERVED1;   /*!< Reserved, 0x06                                            */
  T_Tmr_SMCR_Type SMCR;        /*!< TIM slave mode control register,     Address offset: 0x08 */
  uint16_t      RESERVED2;   /*!< Reserved, 0x0A                                            */
  T_Tmr_DIER_Type DIER;        /*!< TIM DMA/interrupt enable register,   Address offset: 0x0C */
  uint16_t      RESERVED3;   /*!< Reserved, 0x0E                                            */
  T_Tmr_SR_Type SR;          /*!< TIM status register,                 Address offset: 0x10 */
  uint16_t      RESERVED4;   /*!< Reserved, 0x12                                            */
  T_Tmr_EGR_Type EGR;         /*!< TIM event generation register,       Address offset: 0x14 */
  uint16_t      RESERVED5;   /*!< Reserved, 0x16                                            */
  T_Tmr_CCMR1_Type CCMR1;       /*!< TIM capture/compare mode register 1, Address offset: 0x18 */
  uint16_t      RESERVED6;   /*!< Reserved, 0x1A                                            */
  T_Tmr_CCMR2_Type CCMR2;       /*!< TIM capture/compare mode register 2, Address offset: 0x1C */
  uint16_t      RESERVED7;   /*!< Reserved, 0x1E                                            */
  T_Tmr_CCER_Type CCER;        /*!< TIM capture/compare enable register, Address offset: 0x20 */
  uint16_t      RESERVED8;   /*!< Reserved, 0x22                                            */
  __IO uint32_t CNT;         /*!< TIM counter register,                Address offset: 0x24 */
  __IO uint16_t PSC;         /*!< TIM prescaler,                       Address offset: 0x28 */
  uint16_t      RESERVED9;   /*!< Reserved, 0x2A                                            */
  __IO uint32_t ARR;         /*!< TIM auto-reload register,            Address offset: 0x2C */
  __IO uint16_t RCR;         /*!< TIM repetition counter register,     Address offset: 0x30 */
  uint16_t      RESERVED10;  /*!< Reserved, 0x32                                            */
  T_Tmr_CCR_Type CCR;        /*!< TIM capture/compare register 1,      Address offset: 0x34 */
           /*!< TIM capture/compare register 2,      Address offset: 0x38 */
           /*!< TIM capture/compare register 3,      Address offset: 0x3C */
           /*!< TIM capture/compare register 4,      Address offset: 0x40 */
  __IO uint16_t BDTR;        /*!< TIM break and dead-time register,    Address offset: 0x44 */
  uint16_t      RESERVED11;  /*!< Reserved, 0x46                                            */
  T_Tmr_DCR_Type DCR;         /*!< TIM DMA control register,            Address offset: 0x48 */
  uint16_t      RESERVED12;  /*!< Reserved, 0x4A                                            */
  __IO uint16_t DMAR;        /*!< TIM DMA address for full transfer,   Address offset: 0x4C */
  uint16_t      RESERVED13;  /*!< Reserved, 0x4E                                            */
  T_Tmr_OR_Type OR;          /*!< TIM option register,                 Address offset: 0x50 */
  uint16_t      RESERVED14;  /*!< Reserved, 0x52                                            */
} TIMER_TypeDef;

#endif
Başlık: Ynt: STM32F4xx TIMER Init kütüphanesi
Gönderen: Klein - 20 Ocak 2012, 03:15:44
Kullanımı:
PB4 pininden TIM3 Compare modülünü kullanarak ~10 KHz 12 bit PWM sinyali üretme.
Tanımların üzerindeki comment satırları aynı işin STM32F4xx.h ile yapılma şeklini gösteriyor.


// SystemInit kodları

RCC->APB1ENR|=0x00000002;       // Timer3 CLK'u aktif edelim (84 Mhz)
TIM3->PSC = 1;   //  Ön bölücü f/2 48MHz (Fck_PSC / (PSC_VAL+1))
TIM3->ARR = 4096;    // CCR1 ile karşılaştırılacak sayı. (12 bit PWM)

// TIM3->DIER = 0x0001;
TMR3->DIER.UIE = TMR_UIE_UPDATE_IRQ_DISABLE; // Interrupt kapalı. Açılırsa her periyotta interrupt üretir.

//TIM3->CCMR1 |= 0x0068; //PWM mode 1, preload enable
TMR3->CCMR1.OCR.OC1PE = TMR_OCPE_PRELOAD_ENABLE;
TMR3->CCMR1.OCR.OC1M = TMR_OCM_PWM_MODE1;

//TIM3->CCER |= 0x0002; // Polarite seçimi
TMR3->CCER.CC1P = TMR_CCP_OC_ACTIVE_LOW;

//TIM3->CR1 = 0x0080;  // ARPE auto reload preload
TMR3->CR1.ARPE = TMR_ARPE_NOTPRELOAD;

//TIM3->EGR |=0x0001; // Update generation
TMR3->EGR.UG = TMR_UG_UPDATE_REINIT;

//TIM3->CCER |= 0x0001; // CC1 aktif.
TMR3->CCER.CC1E = TMR_CCE_OC_ACTIVE;

PB->AFR.pin.p4 = PORT_AF2_TIM3;   // PORT_B4 TIM3 ile ilişkilendirildi
PB->MODER.pin.p4 = PORT_ALTERNATE_FUNC; // PORT_B4 alternatif fonksiyon
PB->OSPEEDR.pin.p4 = PORT_HI_SPEED; // PORT_B4 çıkışı en yüksek hızda çalışacak
PB->OTYPER.pin.p4 = PORT_PUSH_PULL; // Çıkış tipi Push-Pull

//TIM3->CR1 |= 0x0001; // sayıcıyı başlat.
  TMR3->CR1.CEN = TMR_COUNTER_ENABLE;

// main loop

int main(){
TIM3->CCR1 = 2048; // %50 Duty pwm
while(1);
}



Başlık: Ynt: STM32F4xx TIMER Init kütüphanesi
Gönderen: Klein - 20 Ocak 2012, 03:58:17
Örnek 2:

PA15 pininden Timer 2 capture modülü ile PWM darbe genişliği /periyot ölçme



// SystemInit kodları

//TIM2->CR1 = 0x0080;
RCC->APB1ENR|=0x00000001;       // Timer2 CLK'u aktif edelim (84 Mhz)
TIM2->PSC = 1; // ön bölücü 2 42MHz (Fck_PSC / (PSC_VAL+1))
TIM2->ARR = 4096; // taşma değeri. pwm gelmez veya düşük frekansta gelirse sayıcı bu değeri aşınca yeniden yüklenir.

//TIM2->DIER = 0x0001;
TMR2->DIER.UIE = TMR_UPDATE_IRQ_ENABLE;

//TIM2->CCMR1 |= 0x0002; //CCR 1 için Giriş kaynağı TI1 seçildi
TMR2->CCMR1.ICR.CC1S = TMR_CCS_CH_IN_TI1; // ICR'ye dikkat! Input capture olduğu için ICR kullanıyoruz.

// TIM2->CCER &= ~0x000A; // TI1FP1 için polarite seçimi. evirilmemiş / yükselen kenar
TMR2->CCER.CC1P = TMR_CCP_IC_NONINVERT_RISING;
TMR2->CCER.CC1NP = TMR_CCNP_IC_SINGLE_EDGE;

// TIM2->CCMR1 |= 0x0200; //CCR 2 için Giriş kaynağı TI1 seçildi
TMR2->CCMR1.ICR.CC2S = TMR_CCS_CH_IN_TI2;

// TIM2->CCER |= 0x0020; // TI1FP2 için polarite seçimi. evirilmiş / düşen kenar
TMR2->CCER.CC2P = TMR_CCP_IC_INVERT_FALLING;
TMR2->CCER.CC2NP = TMR_CCNP_IC_SINGLE_EDGE;

// TIM2->SMCR |= 0x0050; // geçerli tetikleme kaynağı TI1FP1
  TMR2->SMCR.TS = TMR_TS_FLTR_IN1_TI1FP1;

// TIM2->SMCR |= 0x0004; // Slave mode = reset Yükselen kenarda sayıcıyı sıfırla ve değeri güncelle.
TMR2->SMCR.SMS = TMR_SMS_RESET_MODE;

// TIM2->CCER |= 0x0011; // CC1 ve CC2 aaktif.
TMR2->CCER.CC1E = TMR_CCE_IC_ENABLE;
TMR2->CCER.CC2E = TMR_CCE_IC_ENABLE;

PA->MODER.pin.p15 = PORT_ALTERNATE_FUNC;
PA->PUPDR.pin.p15 = PORT_PULL_UP;
PA->AFR.pin.p15 = PORT_AF1_TIM2;


NVIC_EnableIRQ(TIM2_IRQn); //Timer 2 interrupt aktif et;
// TIM2->CR1 |= 0x0001; // sayıcıyı başlat.
TMR2->CR1.CEN = TMR_COUNTER_ENABLE;

/*******************************************************************************************/

unsigned short ccr1,ccr2

// interrupt kodu
void TIM2_IRQHandler(){
ccp_update=1;
ccr1=TIM2->CCR1;
ccr2=TIM2->CCR2;
TIM2->SR=0;   

// ccr1 periyot
// ccr2 darbe genişliği.

}


Başlık: Ynt: STM32F4xx TIMER Init kütüphanesi
Gönderen: muhittin_kaplan - 21 Ocak 2012, 15:58:17
Hocam Son Mesajdaki
ccp_update=1; nedir
Başlık: Ynt: STM32F4xx TIMER Init kütüphanesi
Gönderen: Klein - 21 Ocak 2012, 16:25:38
"ccp_update"  yeni değerler alındığını programa bildirmek için koyduğum bir bayrak. 
Veriler üzerinde yapacağım işlemleri interrupt içerisinde yapmak istemediğim için  genelde loop'ta böyle bayraklarım olur. Interrupt'u sadece verileri güncellemek için kullanırım.


if(ccp_update ){
    ccp_update=0;
    sprintf(TxBuf," Periyot =%u\rDarbe genisligi  =%u\r"ccr1,ccr2);
    SendTxt(TxBuf);
}
Başlık: Ynt: STM32F4xx TIMER Init kütüphanesi
Gönderen: Klein - 22 Ocak 2012, 06:56:12
Güncelleme yapıldı.
V1.0.1  21.01.2012  T_Tmr_CCER_Type tipi union yapıldı. Tüm bitlere erişim için CCER isimli uint16_t tipinde üye eklendi.
V1.1.1  22.01.2012  T_Tmr_CCR_Type union tipi eklendi. CCR1, CCR2, CCR3 ve CCR4 registerlerini array ve ayrık olarak kullanabilme opsiyonu geldi.

Yeni değişikliklerle kullanım:
CCR registerleri
TMR1->CCR1 = 0x01B0; Eski kullanım şekli
TMR1->CCR.CCR[0] = 0x01B0; // yeni kullanım şekli.
TMR1->CCR.CCR1 = 0x01B0; // yeni kullanım şekli;

CCER Registerleri.
TMR1->CCER.CC1E =0; // eski
TMR1->CCER.CC1P = 1; //eski

TMR1->CCER.CC1E =0; // yeni
TMR1->CCER.CCER = 0x0550; // yeni
Başlık: Ynt: STM32F4xx TIMER Init kütüphanesi
Gönderen: micelow - 16 Eylül 2013, 11:19:56
Merhaba hocam
Kodları keilde derlemek istediğimde aşagıdaki gibi bir kaç hata ile karşılaşıyorum çözemedim yardımcı olabilir misiniz?

Build target 'Target 1'
compiling main.c...
main.c(14): error:  #20: identifier "TMR_UPDATE_IRQ_ENABLE" is undefined
main.c(40): error:  #20: identifier "PA" is undefined
main.c(40): error:  #20: identifier "PORT_ALTERNATE_FUNC" is undefined
main.c(41): error:  #20: identifier "PORT_PULL_UP" is undefined
main.c(42): error:  #20: identifier "PORT_AF1_TIM2" is undefined
Target not created
Başlık: Ynt: STM32F4xx TIMER Init kütüphanesi
Gönderen: muhittin_kaplan - 16 Eylül 2013, 12:23:37
kütüphanaleri düzgünce eklediniz mi ?
Başlık: Ynt: STM32F4xx TIMER Init kütüphanesi
Gönderen: Klein - 16 Eylül 2013, 14:51:01
bu kütüphaneden önce, GPIO ayarları için başka bir tanım dosyası yazmıştım. Bahsi geçen tanımlar oradan.
Örneklerin arasında var.
https://www.picproje.org/index.php/topic,37346.0.html (https://www.picproje.org/index.php/topic,37346.0.html)
Başlık: Ynt: STM32F4xx TIMER Init kütüphanesi
Gönderen: micelow - 16 Eylül 2013, 21:40:03
tesekkür ederim hocam