Не генерится ШИМ

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Карась
Открыл глаза
Сообщения: 67
Зарегистрирован: Ср май 28, 2008 14:33:11
Откуда: Россия, Саров
Контактная информация:

Не генерится ШИМ

Сообщение Карась »

Всем привет!

Значит, вводные такие: плата STM32F4Discovery, чип STM32F4. Пытаюсь генерить ШИМ на PC6, вот код:

Код: Выделить всё


#include "stm32f4xx.h"
#include "system_stm32f4xx.h"

void InitGPIO(void)
{
    RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN;
    GPIOC->MODER |= GPIO_MODER_MODER6_1;
    GPIOC->OTYPER &= ~GPIO_OTYPER_OT_6;
    GPIOC->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR6;
    GPIOC->AFR[0] = 0x03000000; // TIM8 CH1 connected to pin PC6 (AF3)
}

void InitTIM(void)
{
    RCC->APB2ENR |= RCC_APB2ENR_TIM8EN;
    TIM8->ARR = 3276;
    TIM8->CNT = 0;
    TIM8->PSC = 0;
    TIM8->CCER |= TIM_CCER_CC1E;
    TIM8->CCMR1 |= (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1);
    TIM8->CR1 |= TIM_CR1_CEN;
}

void InitAll(void)
{
    InitGPIO();
    InitTIM();
}

int main(void)
{
    InitAll();

    TIM8->CCR1 = 1638;

    for (;;) {
    }
}



Похоже, что что-то не так настроено, а что - никак не пойму. Всё перепроверил сто раз.
Исходные рассуждения такие:

1. Ножка PC6 связана с альтернативной функцией TIM8 CH1, стало быть настраиваю таймер TIM8 на работу в режиме PWM:

Код: Выделить всё


void InitTIM(void)
{
    RCC->APB2ENR |= RCC_APB2ENR_TIM8EN;
    TIM8->ARR = 3276;
    TIM8->CNT = 0;
    TIM8->PSC = 0;
    TIM8->CCER |= TIM_CCER_CC1E;
    TIM8->CCMR1 |= (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1);
    TIM8->CR1 |= TIM_CR1_CEN;
}



2. ШИМ-сигнал от TIM8 выводится на ножку PC6 - настраиваю порт на работу в режиме AF3

Код: Выделить всё


{
    RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN;
    GPIOC->MODER |= GPIO_MODER_MODER6_1;
    GPIOC->OTYPER &= ~GPIO_OTYPER_OT_6;
    GPIOC->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR6;
    GPIOC->AFR[0] = 0x03000000; // TIM8 CH1 connected to pin PC6 (AF3)
}



Цепляю к ножке PC6 осциллограф и вместо прямоугольных импульсов вижу какой-то слабый шум.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Не генерится ШИМ

Сообщение Myp3ik »

TIM8->BDTR |= TIM_BDTR_MOE;
Иван Сусанин - первый полупроводник :solder:
Карась
Открыл глаза
Сообщения: 67
Зарегистрирован: Ср май 28, 2008 14:33:11
Откуда: Россия, Саров
Контактная информация:

Re: Не генерится ШИМ

Сообщение Карась »

Да, заработало! Просто я не знал про эту особенность TIM8. Надо внимательнее читать Reference manual...
Спасибо!
Ответить

Вернуться в «ARM»