Страница 1 из 1

Не Могу Разобраться С Прерыванием (Stm32Vldiscovery).

Добавлено: Пн мар 25, 2013 15:01:37
astrgan
Здравствуйте.
Не могу разобраться с прерыванием (Stm32Vldiscovery).

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

#include "stm32f10x.h"

char a=1;

unsigned char main (void)
{

         //НАСТРОЙКА ПРЕРЫВАНИЙ
__enable_irq ();                 //разрешение глобальных прерываний
RTC->CRL |= RTC_CRL_CNF; //разрешить конфигурирование регистров RTC
RTC->CRH = RTC_CRH_SECIE;//разрешить прерывание от секундных импульсов
RTC->CRL &= ~RTC_CRL_CNF; //выйти из режима конфигурирования
NVIC_EnableIRQ (RTC_IRQn);


//разрешить тактирование модулей управления питанием и управлением резервной областью
RCC->APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_BKPEN;
//разрешить доступ к области резервных данных
PWR->CR |= PWR_CR_DBP;
//если часы выключены - инициализировать их
if ((RCC->BDCR & RCC_BDCR_RTCEN) != RCC_BDCR_RTCEN)
{
//выполнить сброс области резервных данных
RCC->BDCR |= RCC_BDCR_BDRST;
RCC->BDCR &= ~RCC_BDCR_BDRST;

//выбрать источником тактовых импульсов внешний кварц 32768 и подать тактирование
RCC->BDCR |= RCC_BDCR_RTCEN | RCC_BDCR_RTCSEL_LSE;

RTC->CRL |= RTC_CRL_CNF;
RTC->PRLL = 0x7FFF;              //регистр деления на 32768
RTC->CRL &= ~RTC_CRL_CNF;

//установить бит разрешения работы и дождаться установки бита готовности
RCC->BDCR |= RCC_BDCR_LSEON;
while ((RCC->BDCR & RCC_BDCR_LSEON) != RCC_BDCR_LSEON){}

RTC->CRL &= (uint16_t)~RTC_CRL_RSF;
while((RTC->CRL & RTC_CRL_RSF) != RTC_CRL_RSF){}

return 1;
}

for(;;);

}

void RTC_IRQHandler(void)
{
//причина прерывания - переполнение входного делителя (новая секунда)
if(RTC->CRL & RTC_CRL_SECF)
{
         RTC->CRL &= ~RTC_CRL_SECF; //сбросить флаг (обязательно!!!)
         //выполняем какие-то действия
         ++a;
       
       
}
}


Когда выполняется функция NVIC_EnableIRQ (RTC_IRQn);
В окне дизасемблера программа весит в BusFault_Handler

Изображение

Re: Не Могу Разобраться С Прерыванием (Stm32Vldiscovery).

Добавлено: Вт мар 26, 2013 06:53:36
astrgan
По ходу я не доделал настройки потому что в keil проект заработал.

Re: Не Могу Разобраться С Прерыванием (Stm32Vldiscovery).

Добавлено: Вс июн 09, 2013 18:29:18
dosikus
astrgan писал(а):По ходу я не доделал настройки потому что в keil проект заработал.

Да бы другие не вляпались , в IAR в дебуггере прерывания нужно не только настраивать но и разрешать .
Кому интересно - ройте хелп на эту тему ...