Всем доброго дня.
Собственно сабж - запускается шим только при отладке. Код:
Код
void Tim3_init(void)// 24 MHz clock, 200 Hz int
{
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
TIM3->PSC = 1200 - 1; //Prescaler
TIM3->CCMR1|=TIM_CCMR1_OC1PE|TIM_CCMR1_OC2PE;// Preload (shadow) registers for CCR1, CCR2 - compare registers (analog OCRA, OCRB)
TIM3->CCER|=TIM_CCER_CC1E|TIM_CCER_CC2E;// Signal is output on the corresponding output pin.
TIM3->CCER|=TIM_CCER_CC1P;// Chan 1 active low.
TIM3->ARR = 100; // Auto reload value - val, when timer reloads to 0!!.
TIM3->CR2|=TIM_CR2_MMS_1;// For ADC start point on timer refresh
TIM3->CR1 |= TIM_CR1_CEN; // Enable clock
}
int main(void)
{
Tim3_init();// PWM Timer
TIM3->CCR1=30;// Compare register 1 0-100 %
TIM3->CCMR1|=TIM_CCMR1_OC1M_2|TIM_CCMR1_OC1M_1;// PWM mode 1
while(1);
}
Без отладки - никакой рекции, хотя инверсный выход инициализируется правильно
Что может быть за фигня? В errata пусто
ps. Причем если во время отладки довести до while цикла - пойдут импульсы как и должны, далее выйти из отладки и импульсы пропадают.
Кстати еще вопросик не в тему - почему в отладке (кеил) иногда проскакивает команды? Например у меня всегда проскакивает дебаг команды TIM3->PSC = 1200 - 1; //Prescaler. То есть реально она выполняется, но на нее курсор даже не доходит. пользуюсь обычной пошаговой. Почему так? Ну и другие некоторые команды тоже проскакивают.
Сообщение отредактировал ЯadiatoR - Oct 8 2015, 11:40