Easyelectronics.ru

Электроника для всех
Текущее время: 28 сен 2020, 05:16

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: stm32f4 + dma
СообщениеДобавлено: 27 май 2012, 11:51 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 01 май 2012, 19:02
Сообщения: 74
Пытаюсь освоить)
Стандартный пример (ADC3_DMA) уходит в бесконечный цикл при инициализации DMA.
Но сейчас не об этом.
Хочу ради простоты сделать передачу посредством DMA из памяти (переменной) в регистр порта D. Тем самым зажигать тушить имеющиеся там светодиоды...

Мой не рабочий код:

Код:
#include <stm32f4xx_gpio.h>
#include <stm32f4xx_dma.h>
#include <stm32f4xx_rcc.h>

void delay(unsigned int s) {
   while (--s > 0) {
      __NOP();
   }
}

u16 port_d = 0b1111111111111111;

void dma_init(){
   DMA_InitTypeDef dma;
   DMA_StructInit(&dma);

   dma.DMA_Channel = DMA_Channel_0;
   dma.DMA_DIR = DMA_DIR_MemoryToPeripheral;
   dma.DMA_Mode = DMA_Mode_Circular;
   dma.DMA_PeripheralBaseAddr = (uint32_t)&GPIOD->ODR;
   dma.DMA_Memory0BaseAddr = (uint32_t)&port_d;
   dma.DMA_BufferSize = 2;

   DMA_Init(DMA1,&dma);
   DMA_Cmd(DMA1,ENABLE);
}

void gpio_init() {
     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1 | RCC_AHB1Periph_GPIOD, ENABLE);

     GPIO_InitTypeDef gpio;
     GPIO_StructInit(&gpio);

     gpio.GPIO_Mode = GPIO_Mode_OUT;

     GPIO_Init(GPIOD,&gpio);
}
int main() {
   gpio_init();
   dma_init();

   while(1) {
      delay(0xfffffffff);
      port_d--;
      delay(0xfffffffff);
   }
}


Вопрос.
Как выбрать канал DMA? В кокой доке и тд?
Ну и ткните носом в ошибки)
Спасибо

ps этот код тоже уходит в цикл как и стандартный пример.
В этот цикл:

Код:
/**
* @brief  This is the code that gets called when the processor receives an
*         unexpected interrupt.  This simply enters an infinite loop, preserving
*         the system state for examination by a debugger.
* @param  None     
* @retval None       
*/
    .section  .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
  b  Infinite_Loop
  .size  Default_Handler, .-Default_Handler


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB