реклама на сайте
подробности

 
 
> STM32F4 discovery И прерывания от таймера
RiseOfDeath
сообщение Oct 2 2013, 10:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 2-10-13
Пользователь №: 78 579



Доброго времени суток. У меня какие-то проблемы с прерываниями от таймера на этой отладке.

Вкратце про отладку:
Контроллер stm32f407VG
PD15 и PD14 подключены к светодиодам.

Вкратце код:


main.cpp
Код
#include <stm32f4xx.h>
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_tim.h"
#include "system_stm32f4xx.h"


#include "InitGPIO.h"
#include "InitTimer.h"

#include "misc.h"

int phase1=1;
int phase2=1;
void TIM4_IRQHandler (void);



int main (void)
{
    #ifdef DEBUG
    debug();
    #endif
        
    //__enable_irq();
    InitGPIO();
    InitTimer();

    
    
    while (true)
    {
        if(phase2>0)
        {
            GPIO_SetBits(GPIOD,GPIO_Pin_14);
            phase2*=-1;
        }
        else
        {
            GPIO_ResetBits(GPIOD,GPIO_Pin_14);
            phase2*=-1;
        }    
        for(int i =0; i< 1000000; i++);
    }
}


void TIM4_IRQHandler (void)
{    
    if(phase1>0)
    {
        GPIO_SetBits(GPIOD,GPIO_Pin_15);
        phase1*=-1;
    }
    else
    {
        GPIO_ResetBits(GPIOD,GPIO_Pin_15);
        phase1*=-1;
    }    
    TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
    return;
}


(InitTimer.h содержит только прототип, по этому его не привожу)
InitTimer.cpp
Код
#include "InitTimer.h"
#include <stm32f4xx.h>
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_tim.h"
#include "misc.h"

#define TIMER_PRESCALER    720

TIM_TimeBaseInitTypeDef timer;

void InitTimer()
{    
    
    RCC_APB1PeriphClockCmd ( RCC_APB1Periph_TIM4, ENABLE );
    
    
    TIM_TimeBaseStructInit(&timer);
    timer.TIM_Period = 50;
    timer.TIM_Prescaler = TIMER_PRESCALER;
    TIM_TimeBaseInit ( TIM4, &timer );

    TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
    TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
    TIM_Cmd(TIM4, ENABLE );
    NVIC_EnableIRQ(TIM4_IRQn); //   <<<< Отмеченная строчка.
}


И так... что я имею:

PD15 - мигает.
PD14 - разумеется не мигает.

Раскоменчиваю отмеченую строку и.... микроконтроллер просто зависает (при этом светодиод PD15 загорается, и больше ничего не происходит).

Что я делаю не так?

Сообщение отредактировал RiseOfDeath - Oct 2 2013, 10:10
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.06893 секунд с 7
ELECTRONIX ©2004-2016