Ярлыки

_GetPixelIndex (1) _SetPixelIndex (1) 3-phase (1) 800x480 (1) АЦП (1) генератор (1) синхронный усилитель (2) структура (1) учебный курс (1) шаговый двигатель (1) ШИМ (2) accert (1) AD7608 (1) AD8429 (1) ADC (5) amplifer (1) arccos (1) arcsin (1) arctang (2) arctg (3) ARM (2) arm_sqrt_q15 (2) assembler (6) ASSERT (1) atan (2) bit (1) Bitband (1) boot (3) bootlloader (1) BUTTON (1) C (5) C# (1) CAN (2) CC2530 (5) CMSIS (4) command (1) Cordic (1) Core746I (1) CubeMX (4) DBGMCU (2) debug (2) debug.ini (1) delegate (1) Digital Potentiometers (1) DigitalPOT (1) Discovery (1) DMA (9) DMA2D (1) DSP (1) DSP library (1) DWT (1) EFM32 (5) EmWin (9) EXTI (1) FATFS (1) FMC (2) FreeRTOS (2) gl868-dual cmux (1) GPIO (4) GUI (2) GUIBuilder (1) GUIDRV_CompactColor_16 (1) HAL (3) HappyGecko (1) Hard Fault (2) heap (1) I2C (1) ID (1) ILI9320 (1) ILI9325 (1) Initialisation (1) InitLTDC (1) Instrumentithion (1) Interrupt (4) ITR (1) JTAG (1) Keil (5) LCDConf (2) lock-in (1) LTCD (1) LTDC (3) main (1) memory (1) MINI_STM32 Revision 01 (1) nBoot0 (1) NVIC (1) OnePulse (2) OSAL (4) pack (1) phase (1) printf (3) Pulse (1) PWM (12) RCC (2) RCR (1) Register (1) RESET (2) RS232 (3) RSS (1) RTC (3) RTOS-RTX (1) RTT (1) RTX-RTOS (1) SDCard (1) SDRAM (6) Segger (2) SPI (3) sqrt (3) SSD1298 (1) SSD1963 (1) Standart Peripherial Library (3) STANDBAY (1) startup (1) STemWin (8) stepper motor (1) STlink (2) STM32 (17) STM32429ZI (1) STM32Cube (1) STM32DBG.IN (1) STM32F (28) STM32F0 (4) STM32F1 (13) STM32F4 (10) STM32F4 Discovery (1) STM32F407ZG (1) STM32F429 (2) STM32F746 (1) STOP (1) string (1) struct (1) SWD (1) SWD JTAG (1) Synhronization (1) system_stm32f4xx.c (1) SystemInit (1) SysTick (1) task (4) telit (1) TIM (27) typedef (1) UART (1) USART (9) viewer (2) WM_PAINT (1) Z-stack (5) ZigBee (5)

среда, 17 декабря 2014 г.

STM32F103 PWM init TIM1

  

  RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;       // Enable GPIOB clocking  RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;       // Enable GPIOA clocking  RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;       // Enable TIM1 clocking  RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;       // Enable AFIO clocking  //////////////////////////////////////////////////////////////////////////////// GPIO  GPIOB->CRL  = (GPIO_CRL_MODE0 | 
                 GPIO_CRL_CNF0_1
);    // PB0 - Output mode 50 MHz   GPIOB->CRL &= (~GPIO_CRL_CNF0_0);   // and alternate push-pull  //----------------------------------------  GPIOA->CRL |= (GPIO_CRL_MODE7 | GPIO_CRL_CNF7_1); // PA7 - Output mode 50 MHz   GPIOA->CRL &= (~GPIO_CRL_CNF7_0); // and alternate push-pull  //----------------------------------------  GPIOA->CRH |= (GPIO_CRH_MODE8 | 
                 GPIO_CRH_MODE9 
| 
                 GPIO_CRH_CNF8_1 
| 
                 GPIO_CRH_CNF9_1
); // PA8, PA9 - Output mode 50 MHz  GPIOA->CRH &= (~(GPIO_CRH_CNF8_0 | 
                   GPIO_CRH_CNF9_0
)); // and alternate push-pull  GPIOA->ODR = 0x0000;//---------------------------------------
  
AFIO->MAPR |= AFIO_MAPR_TIM1_REMAP_0;
  
AFIO->MAPR &= (~AFIO_MAPR_TIM1_REMAP_1);  //////////////////////////////////////////////////////////////////////////////// PWM Timer 1  TIM1->CR1 = TIM_CR1_ARPE;  TIM1->PSC = 8;  TIM1->ARR = 0x00FF;  
  TIM1
->CCR1 = 100;  TIM1->CCR2 = 0xFF;  TIM1->CCR3 = 0x00;  TIM1->CCR4 = 0x00;  
  TIM1
->CCMR1 = (TIM_CCMR1_OC1PE | TIM_CCMR1_OC1M |                 TIM_CCMR1_OC2PE | TIM_CCMR1_OC2M);  
  TIM1
->CCER = (TIM_CCER_CC1E | /*TIM_CCER_CC1P |*/                TIM_CCER_CC1NE | /*TIM_CCER_CC1NP |*/                TIM_CCER_CC2E | /*TIM_CCER_CC2P |*/                TIM_CCER_CC2NE /*| TIM_CCER_CC2NP*/);  
  TIM1
->BDTR = (TIM_BDTR_MOE | ((4<<5) | 10));  
  TIM1
->CR1 |= TIM_CR1_CEN;



#include "stm32f10x_lib.h"   
#include "pwm.h"   
   
TIM1_TimeBaseInitTypeDef  TIM1_TimeBaseStructure;   
TIM1_OCInitTypeDef  TIM1_OCInitStructure;   
TIM1_BDTRInitTypeDef TIM1_BDTRInitStructure;   
extern GPIO_InitTypeDef GPIO_InitStructure;   
   
void InitPWM(void) {   
   
  // Enable GPIOA and GPIOB clock   
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   
   
  // GPIOA Configuration: Channel 1   
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;   
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
  GPIO_Init(GPIOA, &GPIO_InitStructure);   
   
  // Enable TIM1 clock   
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);   
   
  // TIM1 Peripheral Configuration   
  TIM1_DeInit();   
   
  // Time Base configuration   
  TIM1_TimeBaseStructure.TIM1_Prescaler = 0x0;   
  TIM1_TimeBaseStructure.TIM1_CounterMode = TIM1_CounterMode_Up;   
  // TIM1_TimeBaseStructure.TIM1_Period = 0xFFF; // 12 bit   
  TIM1_TimeBaseStructure.TIM1_Period = 0x3FF; // 10 bit   
  TIM1_TimeBaseStructure.TIM1_ClockDivision = 0x0;   
  TIM1_TimeBaseStructure.TIM1_RepetitionCounter = 0x0;   
  TIM1_TimeBaseInit(&TIM1_TimeBaseStructure);   
   
   
  // Channel 1 Configuration in PWM mode   
  TIM1_OCInitStructure.TIM1_OCMode = TIM1_OCMode_PWM2;   
  TIM1_OCInitStructure.TIM1_OutputState = TIM1_OutputState_Enable;   
  TIM1_OCInitStructure.TIM1_OutputNState = TIM1_OutputNState_Enable;   
  TIM1_OCInitStructure.TIM1_Pulse = 0x3FF;   
  TIM1_OCInitStructure.TIM1_OCPolarity = TIM1_OCPolarity_Low;   
  TIM1_OCInitStructure.TIM1_OCNPolarity = TIM1_OCNPolarity_Low;   
  TIM1_OCInitStructure.TIM1_OCIdleState = TIM1_OCIdleState_Set;   
  TIM1_OCInitStructure.TIM1_OCNIdleState = TIM1_OCIdleState_Reset;   
  TIM1_OC1Init(&TIM1_OCInitStructure);   
   
  // Automatic Output enable, Break, dead time and lock configuration   
  TIM1_BDTRInitStructure.TIM1_OSSRState = TIM1_OSSRState_Enable;   
  TIM1_BDTRInitStructure.TIM1_OSSIState = TIM1_OSSIState_Enable;   
  TIM1_BDTRInitStructure.TIM1_LOCKLevel = TIM1_LOCKLevel_1;   
  TIM1_BDTRInitStructure.TIM1_DeadTime = 0x05;   
  TIM1_BDTRInitStructure.TIM1_Break = TIM1_Break_Disable;   
  TIM1_BDTRInitStructure.TIM1_BreakPolarity = TIM1_BreakPolarity_High;   
  TIM1_BDTRInitStructure.TIM1_AutomaticOutput = TIM1_AutomaticOutput_Enable;   
  TIM1_BDTRConfig(&TIM1_BDTRInitStructure);   
   
  // TIM1 counter enable   
  TIM1_Cmd(ENABLE);   
   
  // Main Output Enable   
  TIM1_CtrlPWMOutputs(ENABLE);   
   
}   
   
void SetDutyPeriod(Int16U period) {   
   
  TIM1_OCInitStructure.TIM1_Pulse = period;   
  TIM1_OC1Init(&TIM1_OCInitStructure);   
   
}   

   

Комментариев нет:

Отправить комментарий