ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
1427692 Топик полностью
Mty1 (17.04.2024 23:09, просмотров: 96) ответил Mty1 на Спасибо, если за пару дней не запущу через HAL, перейду на регистры раньше, чем планировал.
Решено (для поисковиков) stm32f411 - DMA (Memory->GPIO) по таймеру TIM1. 
HAL_DMA_Init(&hdma_tim1_up);
HAL_DMA_Start(&hdma_tim1_up, (uint32_t)&DMAbuff, (uint32_t)&GPIOB->ODR, MAX_TICKS);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
TIM1->DIER |= (1 << 8);

Или с регистрами

  DMA2_Stream5->PAR = (uint32_t)&(GPIOB->ODR); 		// Set peripheral address
  DMA2_Stream5->M0AR = (uint32_t)&DMAbuff;			// Set memory address
  DMA2_Stream5->NDTR = MAX_TICKS; 					// set number of bytes to transfer
  
DMA2_Stream5->CR = (6 << DMA_SxCR_CHSEL_Pos) | // enable channel 6 (TIM1_UP) (2 << DMA_SxCR_PL_Pos) | // set to high priority (1 << DMA_SxCR_DIR_Pos) | //set memory-to-peripheral (1 << DMA_SxCR_MINC_Pos) | //Incremement memory address (0 << DMA_SxCR_MSIZE_Pos) | // Set memory data width to a byte (0 << DMA_SxCR_PSIZE_Pos) | // Set peripheral data width to a byte (1 << DMA_SxCR_CIRC_Pos) | // Set to circular mode (1 << DMA_SxCR_EN_Pos); //enable DMA
TIM1->DIER |= (1 << 8); // set UDE bit (update dma request enable)
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);