Code:
int main() {
//clocke enable
RCC->APB2ENR |= (RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN);
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
//GPIOA_pin6 alternate output push_pull
GPIOA->CRL |= ((1<<24) | (1<<25));
GPIOA->CRL |= GPIO_CRL_CNF6_1;
GPIOA->CRL &= ~GPIO_CRL_CNF6_0;
//GPIOA_pin7 alternate output push_pull
GPIOA->CRL |= ((1<<28) | (1<<29));
GPIOA->CRL |= GPIO_CRL_CNF7_1;
GPIOA->CRL &= ~GPIO_CRL_CNF7_0;
//TIM3 config
TIM3->PSC = 0; //prescaler
TIM3->ARR = 1; //autoreload
TIM3->CCR1 = 1; //capture registar
//PWM mod
TIM3->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1;
//capture enable
TIM3->CCER = TIM_CCER_CC1E;
//TIM3 enable
TIM3->CR1 = TIM_CR1_CEN;
}
Običan PWM, ništa pametno.
Samo mi palo na pamet da testiram koliko može da ide, ako budem radio sa TIM1, okačiću.
Macola je u pravu, ovo je TIM3, on je na APB1, koji je ograničen na 36MHZ, sa TIM1 koji je na APB2 sigurno da može da se ide do 72MHZ, samo je pitanje koliko je to upotrebljivo.