打印
[开发工具]

STM32CubeMX设置 DMA后,输出代码不在DMA_Init中

[复制链接]
3605|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rating|  楼主 | 2014-8-10 18:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Rating 于 2014-8-10 18:53 编辑

芯片选择 STM32F429
外设选择SPI5,DMA对应 DMA2-Stream5 ,DMA 中断使能
外设使能 Usart1
设置 GPIOF6 为推挽输出
然后选择输出代码

DMA的初始化部分只有这样一段:


void MX_DMA_Init(void)
{
  /* DMA controller clock enable */
  __DMA2_CLK_ENABLE();

  /* DMA interrupt init */
  /* Sets the priority grouping field */
  HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
  HAL_NVIC_SetPriority(DMA2_Stream5_IRQn, 0, 1);
  HAL_NVIC_EnableIRQ(DMA2_Stream5_IRQn);

}


郁闷了……


-------------------------

找到原因了。在楼下
沙发
Rating|  楼主 | 2014-8-10 18:52 | 只看该作者
找到了

居然是在另外一个文件里面。不在这个函数里初始化的

void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
{

  GPIO_InitTypeDef GPIO_InitStruct;
  if(hspi->Instance==SPI5)
  {
    /* Peripheral clock enable */
    __SPI5_CLK_ENABLE();
  
    /**SPI5 GPIO Configuration   
    PF7     ------> SPI5_SCK
    PF8     ------> SPI5_MISO
    */
    GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF5_SPI5;
    HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);

    /* Peripheral DMA init*/
  
    hdma_spi5_rx.Instance = DMA2_Stream3;
    hdma_spi5_rx.Init.Channel = DMA_CHANNEL_2;
    hdma_spi5_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
    hdma_spi5_rx.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_spi5_rx.Init.MemInc = DMA_MINC_ENABLE;
    hdma_spi5_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
    hdma_spi5_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
    hdma_spi5_rx.Init.Mode = DMA_NORMAL;
    hdma_spi5_rx.Init.Priority = DMA_PRIORITY_VERY_HIGH;
    hdma_spi5_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
    HAL_DMA_Init(&hdma_spi5_rx);

    __HAL_LINKDMA(hspi,hdmarx,hdma_spi5_rx);

  }

}

使用特权

评论回复
板凳
foxglove| | 2015-2-11 14:18 | 只看该作者
找到了就好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

1

粉丝