User Tag List

Показано с 1 по 10 из 63

Тема: Чтение TAP файлов ZX-Spectrum на базе STM32F407

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    HardWareMan
    Гость

    По умолчанию

    Ну вот у меня в проекте есть RTOS. Я делаю так:
    Код:
    // Настройка таймера
    RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM3, ENABLE );
    // Запуск таймера TIM3 если он стоял (зависимость модуля от таймера)
    TIM3->PSC = 0x00A7; TIM3->ARR = 0xFFFF; TIM3->CCMR1 = 0x0000; TIM3->CCMR2 = 0x3131;
    TIM3->CCER = 0x3300; TIM3->SMCR = 0x0000; TIM3->DIER = 0x0000; TIM3->CR1 = 0x0001;
    // Включаем прерывания
    NVIC_EnableIRQ(TIM3_IRQn);
    TIM3->DIER = (TIM3->DIER & ~TIM_DIER_CC1IE) | TIM_DIER_CC3IE;
    Да, я люблю прямое обращение к регистрам, но это не принципиально. Это инит таймера. Сам обработчик оформляю в main.c так:
    Код:
    // Прерывание таймера TIM3
    void TIM3_IRQHandler ( void )
    {
    	TIM3_IRQ();
    }
    А в стартовом коде не забываем выставить приоритеты нужным нам прерываниям:
    Код:
    static void NVIC_Configuration ( void )
    {
    	NVIC_InitTypeDef NVIC_InitStructure;
    
    	/* Configure the NVIC Preemption Priority Bits */
    	NVIC_PriorityGroupConfig( NVIC_PriorityGroup_1 );
    
    	NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;
    	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    	NVIC_Init( &NVIC_InitStructure );
    	NVIC_InitStructure.NVIC_IRQChannel = SD_SDIO_DMA_IRQn;
    	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    	NVIC_Init( &NVIC_InitStructure );
    	NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
    	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
    	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    	NVIC_Init( &NVIC_InitStructure );
    }
    Резюмирую: Чудес не бывает. STM32 сложнее АТмеги и там надо все делать руками. Т.е., для активации всей цепочки прерываний надо обязательно включить [тактирование] всего оборудования, что ты используешь (без исключений). Надо выставить все необходимые флаги и маски в настройках самого устройства (источники прерываний). Надо активировать необходимые прерывания в контроллере прерываний NVIC, при использовании всяких RTOS - дополнительно распределить приоритеты. Перехватить сам вектор прерывания (по умолчанию все неиспользованные вектора стоят как .weak и для перехвата просто достаточно объявить их в main.c). Если используются ноги - то и там следует настроить AF. Как-то так...
    Последний раз редактировалось HardWareMan; 29.09.2017 в 09:08.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 15
    Последнее: 27.09.2025, 12:42
  2. Ответов: 0
    Последнее: 12.01.2017, 11:00
  3. Конвертор TAP файлов
    от dM_GBG в разделе Софт
    Ответов: 1
    Последнее: 22.11.2011, 11:01
  4. чтение файлов MS-word
    от p@lex в разделе Софт
    Ответов: 17
    Последнее: 22.12.2007, 09:42
  5. Как в Unreal ускорить загрузку TAP файлов?
    от lavstudio в разделе Эмуляторы
    Ответов: 1
    Последнее: 19.02.2005, 01:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •