Ярлыки

_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)

суббота, 29 ноября 2014 г.

ШИМ по двум каналам на TIM1

RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;  //такты
TIM1->CCER = 0;                     //обнуляем CCER (выключаем каналы)
TIM1->ARR = 100;                 // максимальное значение, до которого таймер ведет счет 
TIM1->PSC = 7200-1;                // предделитель         
TIM1->BDTR |= TIM_BDTR_MOE;     // Разрешаем вывод сигнала на выводы
//для первого ШИМ-сигнала используем канал 1 
//задаем скважность в регистр сравнения канала (значения от 0 до TIM1->ARR) 
TIM1->CCR1 = 50;      
// Включаем режим канал в режим ШИМ           
TIM1->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2;     
// Разрешаем вывод не инвертированного сигнала на ногу МК     
TIM1->CCER |= TIM_CCER_CC1E;     
// Разрешаем вывод не инвертированного сигнала на ногу МК 
//для второго ШИМ-сигнала используем канал 4
//задаем скважность в регистр сравнения канала (значения от 0 до TIM1->ARR)   
TIM1
->CCR4 = 50;                   
// Включаем канал в режим ШИМ       
TIM1->CCMR2 |= TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2;     
// Разрешаем вывод не инвертированного сигнала на ногу МК
TIM1
->CCER |= TIM_CCER_CC4E;     
// Запускаем счет
TIM1
->CR1 |= TIM_CR1_CEN;



Теперь для управления скважностью нужного канала меняем значения в регистрах TIM1->CCR1 и TIM1->CCR4. Т.к. у нас глубина счета установлена 100, то задавая значение от 0 до 100 получим скважность в процентах :)

2 комментария: