Warning
This page is located in archive. Go to the latest version of this course pages.

06 - Compare režim

#include "stm32f4xx.h"
 
#define  setBit(reg, bit) ((reg) |= (1<<bit))
#define  clrBit(reg, bit) ((reg) &= ~(1<<bit))
#define  tglBit(reg, bit) ((reg) ^= (1<<bit))
#define  readBit(reg, bit) ((reg) & (1<<bit))
 
/*
 * Inicializace casovace TIMx pro PWM
 */
void PWMInit(){
    setBit(RCC->APB1ENR, x);        // Povoleni hodin casovace TIMx
    setBit(TIMx->CR1, 0);            // Povoleni casovace TIMx
 
    TIMx->PSC = ?;                    // preddelicka ? na ? MHz
    TIMx->ARR = ?;                    // autoreload registr na ? Hz
 
    clrBit(TIMx->SR, 0);                // Obnoveni status registru po prerueseni
    setBit(TIMx->CCMRx, ?);            // PWM1 mode pro CCx
    setBit(TIMx->CCMRx, ?);            // PWM1 mode pro CCx
    setBit(TIMx->CCER, ?);            // Povoleni vystupu CCx 
 
    setBit(GPIOx->MODER, ?);        // Nastaveni AF pro Pxy
    setBit(GPIOx->AFR[?], ?);        // Nastaveni AFx pro pin Pxy
    setBit(RCC->AHB1ENR, ?);        // Povoleni hodin pro GPIOx
}
 
 
int main(void){
    int i = 0;
    setBit(RCC->CR, 0);             // Nastaveni HSI jako zroj hodin (16MHz)
    while (!readBit(RCC->CR, 1));    // Vyckej nez bude HSI stabilni
 
    PWMInit();
    while(1){
        for(int k=0;k<10000;k++);
        TIMx->CCRx = i++;
        if(i >1000)
            i = 0;
    }
}

courses/b2m37mam/priklady/stm32/06-tmr_capture.txt · Last modified: 2022/09/13 14:35 by nentvond