Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F051R8 не удается запустить PWM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Artos5
Добрый день уважаемые! Бьюсь уже часов 5 , не могу запустить ШИМ 14 таймера....

Вот пример инициализации:

Код
void Init_PWM(void)
{
    RCC->APB1ENR |= RCC_APB1ENR_TIM14EN;
    
/*Configure GPIO pin alternate function */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_4);
    
    //GPIOA->OSPEEDR |= 0x0000;
        GPIOA->MODER |= 0x0200;
    //GPIOA->PUPDR |= 0x0000;
    //GPIOB->AFR[0] |= (1<<4);

    //TIM14->DIER |= 0x0000;
    //TIM14->EGR |= 0x0003;
    TIM14->CR1 |= 0x0080;
    TIM14->CCMR1 |= 0x0064; // pwm mode
    TIM14->ARR = 0x000F;
    TIM14->PSC = 0x000F;
    TIM14->CCER |= 0x0001;    // capt/comp out enable
    TIM14->CR1 |= 0x0001; // tim en
}


И скажите пожалуйста, как активировать альтернативную функцию не используя SPL ?
Заранее спасибо Вам за помощь! sm.gif
Forger
Цитата(Artos5 @ Nov 14 2013, 10:39) *
Добрый день уважаемые! Бьюсь уже часов 5 , не могу запустить ШИМ 14 таймера....

А тактирование GPIOA включено?
Artos5
Да, обязательно!
Оно включено в инициализации I/O


Вот полная инициализация:

CODE
void Init_PWM(void)
{
RCC->APB1ENR |= RCC_APB1ENR_TIM14EN;

/*Configure GPIO pin alternate function */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_4);


GPIOA->MODER |= 0x0200;

TIM14->CR1 |= 0x0080;
TIM14->CCMR1 |= 0x0064; // pwm mode
TIM14->ARR = 0x000F;
TIM14->PSC = 0x000F;
TIM14->CCER |= 0x0001; // capt/comp out enable
TIM14->CR1 |= 0x0001; // tim en
}

/**
* @brief GPIO configuration
* @param None
* @retval None
*/
void Init_GPIO(void)
{
/* Private typedef ---------------------------------------------------------*/
GPIO_InitTypeDef GPIO_InitStruct_butt;
GPIO_InitTypeDef GPIO_InitStruct_led;
GPIO_InitTypeDef GPIO_InitStruct;
//GPIO_InitTypeDef GPIO_InitStruct_led1;

/*Enable or disable the AHB peripheral clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);



/** Configure pins as GPIO for USER button
PA0 ------> GPIO_Input
*/

/* Configure Button pin as input */
GPIO_InitStruct_butt.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStruct_butt.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStruct_butt.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_Init(GPIOB, &GPIO_InitStruct_butt);


/*Configure GPIO pin */
GPIO_InitStruct_led.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15|GPIO_Pin_11;
GPIO_InitStruct_led.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct_led.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct_led.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStruct_led.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStruct_led);

/*Configure GPIO pin */
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);

/*Configure GPIO pin */
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOC, &GPIO_InitStruct);
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.