#include <stm32f4xx.h> #include "other_stuff.h" #define APB1_FREQ 42000000 // Clock driving TIM3 #define CNT_FREQ 21000000 // TIM3 counter clock (prescaled APB1) #define PWM_FREQ 10000 // PWM frequency in (320Hz~21MHz) range #define PWM_DC_CH1 50 // Channel 1 duty cycle #define PWM_DC_CH2 25 // Channel 2 duty cycle #define TIM_PULSE_CH1 (((PWM_DC_CH1) * (APB1_FREQ)) \ / ((PWM_FREQ) * (200))) // Output Compare 1 reg value #define TIM_PULSE_CH2 (((PWM_DC_CH2) * (APB1_FREQ)) \ / ((PWM_FREQ) * (200))) // Output Compare 2 reg value #define TIM_PERIOD (((CNT_FREQ) / (PWM_FREQ))-1) // Autoreload reg value #define TIM_PRESCALER (((APB1_FREQ) / (CNT_FREQ))-1) // APB1 prescaler int main() { GPIO_InitTypeDef gpio_C; // GPIOC structure TIM_TimeBaseInitTypeDef TIM3_TimeBase; // Time Base structure TIM_OCInitTypeDef TIM3_OC; // Output Compare structure RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); // Clocking GPIOC (AHB1 = 84MHz) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // Clocking TIM3 (APB1 = 42MHz) gpio_C.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; // Ch.1 (PC6), Ch.2 (PC7) gpio_C.GPIO_Mode = GPIO_Mode_AF; // PWM is an alternative function gpio_C.GPIO_Speed = GPIO_Fast_Speed; // 50MHz gpio_C.GPIO_OType = GPIO_OType_PP; // Push-pull gpio_C.GPIO_PuPd = GPIO_PuPd_UP; // Pulling-up GPIO_Init(GPIOC, &gpio_C); // Initializing GPIOC structure GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_TIM3); // Routing TIM3 output to PC6 GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_TIM3); // Routing TIM3 output to PC7 TIM3_TimeBase.TIM_ClockDivision = 0; // Not dividing TIM3_TimeBase.TIM_CounterMode = TIM_CounterMode_Up; // Upcounting configuration TIM3_TimeBase.TIM_Period = TIM_PERIOD; // Autoreload value (ARR) TIM3_TimeBase.TIM_Prescaler = TIM_PRESCALER; // dividing APB1 by 2 TIM_TimeBaseInit(TIM3, &TIM3_TimeBase); // Initializing Time Base structure TIM3_OC.TIM_OCMode = TIM_OCMode_PWM1; // Edge-aligned mode TIM3_OC.TIM_OutputState = TIM_OutputState_Enable; // Enabling the Output Compare state TIM3_OC.TIM_OCPolarity = TIM_OCPolarity_High; // Regular polarity (low will inverse it) TIM3_OC.TIM_Pulse = TIM_PULSE_CH1; // Output Compare 1 reg value TIM_OC1Init(TIM3, &TIM3_OC); // Initializing Output Compare 1 structure TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable); // Disabling Ch.1 Output Compare preload TIM3_OC.TIM_OutputState = TIM_OutputState_Enable; // Enabling again in case the values changed TIM3_OC.TIM_Pulse = TIM_PULSE_CH2; // Output Compare 2 reg value TIM_OC2Init(TIM3, &TIM3_OC); // Initializing Output Compare 2 structure TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Disable); // Disabling Ch.2 Output Compare preload TIM_Cmd(TIM3, ENABLE); // Ready, Set, Go! while(1) { //os_sys_init(init_task); // Starting the RTX kernel } }
Ярлыки
_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)
пятница, 25 декабря 2015 г.
STM32F4 Timers for PWM
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий