Перейти к содержанию
    

Поиск

Показаны результаты для тегов 'stm32f407vg'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Сайт и форум
    • Новости и обсуждения сайта и форума
    • Другие известные форумы и сайты по электронике
    • В помощь начинающему
    • International Forum
    • Образование в области электроники
    • Обучающие видео-материалы и обмен опытом
  • Cистемный уровень проектирования
    • Вопросы системного уровня проектирования
    • Математика и Физика
    • Операционные системы
    • Документация
    • Системы CAD/CAM/CAE/PLM
    • Разработка цифровых, аналоговых, аналого-цифровых ИС
    • Электробезопасность и ЭМС
    • Управление проектами
    • Нейронные сети и машинное обучение (NN/ML)
  • Программируемая логика ПЛИС (FPGA,CPLD, PLD)
    • Среды разработки - обсуждаем САПРы
    • Работаем с ПЛИС, области применения, выбор
    • Языки проектирования на ПЛИС (FPGA)
    • Системы на ПЛИС - System on a Programmable Chip (SoPC)
    • Методы и средства верификации ПЛИС/ASIC
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCU)
    • Cредства разработки для МК
    • ARM
    • RISC-V
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
    • Пайка и монтаж
    • Корпуса
    • Вопросы надежности и испытаний
  • Аналоговая и цифровая техника, прикладная электроника
    • Вопросы аналоговой техники
    • Цифровые схемы, высокоскоростные ЦС
    • RF & Microwave Design
    • Метрология, датчики, измерительная техника
    • АВТО электроника
    • Умный дом
    • 3D печать
    • Робототехника
    • Ремонт и отладка
  • Силовая электроника - Power Electronics
    • Силовая Преобразовательная Техника
    • Обратная Связь, Стабилизация, Регулирование, Компенсация
    • Первичные и Вторичные Химические Источники Питания
    • Высоковольтные Устройства - High-Voltage
    • Электрические машины, Электропривод и Управление
    • Индукционный Нагрев - Induction Heating
    • Системы Охлаждения, Тепловой Расчет – Cooling Systems
    • Моделирование и Анализ Силовых Устройств – Power Supply Simulation
    • Компоненты Силовой Электроники - Parts for Power Supply Design
  • Интерфейсы
    • Форумы по интерфейсам
  • Поставщики компонентов для электроники
    • Поставщики всего остального
    • Компоненты
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
    • Обсуждение Майнеров, их поставки и производства
  • Дополнительные разделы - Additional sections
    • Встречи и поздравления
    • Ищу работу
    • Предлагаю работу
    • Куплю
    • Продам
    • Объявления пользователей
    • Общение заказчиков и потребителей электронных разработок

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город


Код проверки


skype


Facebook


Vkontakte


LinkedIn


Twitter


G+


Одноклассники


Звание

Найдено: 0 результатов

  1. День добрый Я ещё совсем новичок в микроконтроллерах, поэтому даже не очень знаю как правильно задать вопрос по своей проблеме. Пробую запустить Keil 4.73 вполне дефолтный код обработчика прерывания от таймера TIM_TimeBaseInitTypeDef timer_struct; NVIC_InitTypeDef NVIC_struct; uint32_t flag = 0; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); timer_struct.TIM_Prescaler = 20000 - 1; timer_struct.TIM_CounterMode = TIM_CounterMode_Up; timer_struct.TIM_Period = 1000; timer_struct.TIM_ClockDivision = TIM_CKD_DIV1; timer_struct.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM5, &timer_struct); TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE); TIM_Cmd(TIM5, ENABLE); // NVIC init NVIC_struct.NVIC_IRQChannel = TIM5_IRQn; NVIC_struct.NVIC_IRQChannelPreemptionPriority = 0; NVIC_struct.NVIC_IRQChannelSubPriority = 1; NVIC_struct.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_struct); while (1) { flag++; } Всё компилируется без ошибок, запускается, но ничего не работает. По брейкпойнтам стало ясно, что проблема либо с действиями NVIC_Init(&NVIC_struct); либо с TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE); Не важно, в каком порядке инициализировать, та строчка, которая будет второй вешает исполнение программы, ощущение, что оно уходит в бесконечный цикл и до while(1) даже не доходит. flag в watch'e на нуле и не растёт ПРИ ЭТОМ: Если поставить брейкпойнт в проблемном месте и трейсить пошагово, то всё работает как надо и flag в watch'e растёт. Подскажите, с чем может быть проблема, куда копать?
  2. freertos + fatfs на stm32f407vg

    Добрый день! Процессор stm32f407vg. На нём запущена FREERTOS. stm общается с SDcard по SDIO с прерываниями от DMA. Без ОС - инициализация, запись, чтение работают. Вопрос по поводу приоритетов прерываний. Обработчики прерываний имеют вид: void SDIO_IRQHandler(void) { portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; SD_ProcessIRQSrc(); xSemaphoreGiveFromISR( c_xSemaphore_SDIO_IRQHandler, &xHigherPriorityTaskWoken ); if( xHigherPriorityTaskWoken != pdFALSE ){ portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); } } void SD_SDIO_DMA_IRQHANDLER(void) { portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; SD_ProcessDMAIRQ(); xSemaphoreGiveFromISR( c_xSemaphore_SD_SDIO_DMA_IRQHANDLER, &xHigherPriorityTaskWoken ); if( xHigherPriorityTaskWoken != pdFALSE ) { portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); } } В функции SD_ReadMultiBlocksFIXED .... xSemaphoreGive( c_xSemaphore_SDIO_IRQHandler); xSemaphoreGive( c_xSemaphore_SD_SDIO_DMA_IRQHANDLER); SDIO_ITConfig(SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_DATAEND | SDIO_IT_RXOVERR | SDIO_IT_STBITERR, ENABLE); SDIO_DMACmd(ENABLE); SD_LowLevel_DMA_RxConfig((uint32_t *)readbuff, (NumberOfBlocks * BlockSize)); while (xSemaphoreTake( c_xSemaphore_SDIO_IRQHandler, cardBLOCK_TIME_WAITING)==pdFALSE); while (xSemaphoreTake( c_xSemaphore_SD_SDIO_DMA_IRQHANDLER, cardBLOCK_TIME_WAITING)==pdFALSE); .... и в функции SD_WriteMultiBlocksFIXED ... SDIO_ITConfig(SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_DATAEND | SDIO_IT_RXOVERR | SDIO_IT_STBITERR, ENABLE); SDIO_DMACmd(ENABLE); SD_LowLevel_DMA_TxConfig((uint32_t *)writebuff, (NumberOfBlocks * BlockSize)); while (xSemaphoreTake( c_xSemaphore_SD_SDIO_DMA_IRQHANDLER, cardBLOCK_TIME_WAITING)==pdFALSE); ... Настройка прерываний: void Init_NVIC(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 12; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = SD_SDIO_DMA_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 13; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 14; NVIC_Init(&NVIC_InitStructure); } Если NVIC_IRQChannelPreemptionPriority для SDIO и SDIO_DMA поставить 12 и 13, то программа зацикливается в ожидании while ((DMAEndOfTransfer == 0x00) && (TransferEnd == 0) && (TransferError == SD_OK) && (timeout > 0)) { timeout--; } в функции SD_WaitReadOperation(). Задача, для записи данных на карту void vTaskSendSD(void *pvParameters) { volatile UINT BytesWritten; portBASE_TYPE xStatus; uint8_t ps; for (;;) { xQueueReceive(xQueue, &ps, portMAX_DELAY); if(cSDclose < 500){//250 res = f_lseek(&fil, fil.fsize); if(ps) res = f_write(&fil, buf_2, 4096, &BytesWritten); else res = f_write(&fil, buf_1, 4096, &BytesWritten); f_sync(&fil); cSDclose++; }else{ f_close(&fil); f_mount(0, NULL); } } } Каждый из массивов buf заполняется в течении 2.7 сек. Если поставить приоритеты NVIC_IRQChannelPreemptionPriority для SDIO и SDIO_DMA поставить 4 и 5 и убрать семафоры из обработчиков прерываний - проект работает, но нестабильно. Данные на SDcard могут записываться без сбоев длительное время, а может записаться 4 кБайта и всё. В чём может быть проблема, кто сталкивался? Спасибо.
×
×
  • Создать...