双鸭山新闻网:STM32CubeMX系列教程6:直接存储器会见 (DMA)

新2备用网址/2020-04-10/ 分类:科技/阅读:

        作为一个搬运工,要他正常事变必必要确定几个紧张的参数。

1.传输模式:数据从那边搬到那边。三种也许的传输偏向:存储器到外设、外设到存储器或存储器到存储器。 

2.通道选择:就是数据传输的是走那条阶梯

3.仲裁器:多个DMA传输是优先级高的优先传输。

4.数据长度T媚课传输的数据长度,可以一个字节,两个字节(半字),四个字节(字)

5.指针递增:假如使能了递增模式,则下一次传输的地点将是前一次传输的地点递增 1(对付字节)、2(对付半字)或4(对付字)。


        打开STM32CubeMX从头建工程,设置和上一章设置一样。只是这个工程中,在DMA配置栏添加UASART发送TX的DMA。发送选择 DMA2 Stream 7通道,偏向从存储器到外设。优先级为低。Mode为Normal,Data Width选择Byte。



双鸭山消息网:STM32CubeMX系列教程6:直接存储器接见 (DMA)


个中mode配置可以选择Normal表单次传输,传输一次后住手传输,Circular暗示轮回传输,传输完成后又从头最先继承传输,不绝轮回永不断止。此处选择单次传输。



Increment Address暗示地点指针递增。串口发送数据是将数据不绝存进串口的发送数据寄存器(USARTx_TDR)。以是外接的地点是不递增。而内存储器存储的是要发送的数据,以是地点指针要递增才气将以是的数据发送出去。



双鸭山消息网:STM32CubeMX系列教程6:直接存储器接见 (DMA)


 


串口数据发送寄存器只能存储8bit,每次发送一个字节,以是数据长度选择Byte。



双鸭山消息网:STM32CubeMX系列教程6:直接存储器接见 (DMA)



其它要留意的一点,必必要开启串口间断。DMA2  stream7间断已默认开启。



双鸭山消息网:STM32CubeMX系列教程6:直接存储器接见 (DMA)


天生陈诉以及代码,编译措施。在usart.c文件中,可以找到适才的DMA配置。



/* Peripheral DMA init*/ hdma_usart1_tx.Instance = DMA2_Stream7; hdma_usart1_tx.Init.Channel = DMA_CHANNEL_4; hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE; hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; hdma_usart1_tx.Init.Mode = DMA_NORMAL; hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW; hdma_usart1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; HAL_DMA_Init(&hdma_usart1_tx); __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx);


在main函数前面添加发送的数据。


/* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ uint8_t aTxMessage[] = "\r\n**** UART-Hyperterminal communication based on DMA ***\r\n WaveShare Open7XXI-C Board \r\n"; /* USER CODE END PV */


在main()函数的while(1)轮回中添加应用措施,通过DMA将数据发送出去。


/* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_UART_Transmit_DMA(&huart1, (uint8_t *)aTxMessage, sizeof(aTxMessage)); HAL_Delay(1000); } /* USER CODE END 3 */


编译措施并下载到开拓板。用USB线毗连开拓板到电脑,在电脑上打开串口调试助手。选择对应的串标语,配置波特率为115200。按下复位按键会吸取到如图信息。



双鸭山消息网:STM32CubeMX系列教程6:直接存储器接见 (DMA)

TAG:(DMA)
阅读:
扩展阅读:
广告 330*360
广告 330*360

热门文章

HOT NEWS
  • 周榜
  • 月榜
阳光在线官网
微信二维码扫一扫
关注微信公众号
新闻自媒体 Copyright © 2002-2019 阳光在线官网 版权所有
二维码
意见反馈 二维码