[РЕШЕНО]STM32L476RG настройка Output Compare + DMA

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
gruffi
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт дек 29, 2011 16:25:56

[РЕШЕНО]STM32L476RG настройка Output Compare + DMA

Сообщение gruffi »

Добрый день, форумчане!
Настроил генерирование импульсов в режиме сравнения, но прикрутить DMA не получается. Прерывание не вызывается...Пните в нужном направлении плиз...

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

RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN;

    GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODE6)) | GPIO_MODER_MODE6_1;
    GPIOA->OTYPER &= ~GPIO_OTYPER_OT6;
    GPIOA->OSPEEDR |= GPIO_OSPEEDR_OSPEED6;
    GPIOA->PUPDR &= ~GPIO_PUPDR_PUPD6;
    GPIOA->AFR[0] = (GPIOA->AFR[0] & ~(GPIO_AFRL_AFSEL6)) | (GPIO_AFRL_AFSEL6_3 | GPIO_AFRL_AFSEL6_2 | GPIO_AFRL_AFSEL6_1);

    RCC->APB2ENR |= RCC_APB2ENR_TIM16EN;
    RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN;

    uint16_t data[] = { 2400, 600, 600, 600, 1200, 600 };

    DMA1_Channel3->CPAR = (uint32_t)&TIM16->CCR1;
    DMA1_Channel3->CMAR = (uint32_t)&data[0];
    DMA1_Channel3->CNDTR = 6;
    DMA1_Channel3->CCR &= ~(DMA_CCR_MSIZE | DMA_CCR_PSIZE | DMA_CCR_PINC | DMA_CCR_CIRC);
    DMA1_Channel3->CCR |= DMA_CCR_PL | DMA_CCR_MSIZE_0 | DMA_CCR_PSIZE_0 | DMA_CCR_MINC | DMA_CCR_DIR | DMA_CCR_TCIE;
    DMA1_Channel3->CCR |= DMA_CCR_EN;

    TIM16->PSC = 35;
    TIM16->ARR = 60000;
    TIM16->CCR1 = 100;
    TIM16->CCMR1 = (TIM16->CCMR1 & ~(TIM_CCMR1_OC1M | TIM_CCMR1_OC1PE | TIM_CCMR1_CC1S)) | (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0);
    TIM16->CCER = (TIM16->CCER & ~TIM_CCER_CC1P) | TIM_CCER_CC1E;
    TIM16->BDTR |= TIM_BDTR_MOE;
    TIM16->DIER |= TIM_DIER_CC1DE;

    TIM16->CR1 |= TIM_CR1_CEN;

    NVIC_SetPriority(DMA1_Channel3_IRQn, 0);
    NVIC_EnableIRQ(DMA1_Channel3_IRQn);
Спасибо.
Последний раз редактировалось gruffi Пт сен 04, 2020 19:51:12, всего редактировалось 2 раза.
Реклама
Аватара пользователя
240265
Электрический кот
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Re: STM32L476L настройка Output Compare + DMA

Сообщение 240265 »

__enable_irq();
IVL ex UA6PJ
Реклама
Аватара пользователя
gruffi
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт дек 29, 2011 16:25:56

Re: STM32L476L настройка Output Compare + DMA

Сообщение gruffi »

Да это выделение не дотянул до вызова...После NVIC_... идет. Не понятно куда копать...

Добавлено after 3 hours 16 minutes 45 seconds:
Re: [РЕШЕНО]STM32L476RG настройка Output Compare + DMA
Не дочитал, надо еще:

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

DMA1_CSELR->CSELR = (DMA1_CSELR->CSELR & ~DMA_CSELR_C3S) | (0x04 << DMA_CSELR_C3S_Pos);
Теперь работает...
Ответить

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