我们用 Keil 打开下面这个工程:
如图,有一些存储在 Flash 的数据需要搬运到 RAM 区的一个数组。通常我们可以用如下的代码实现:
aDST_Buffer[i] = aSRC_Const_Buffer[i];
像串口工程代码声明了串口类型的 Handle一样,这里声明了一个 DMA 类型的 Handle 来负责 DMA 模块的处理。
需要注意的地方:
__HAL_RCC_DMA1_CLK_ENABLE();
初始化参数(DmaHandle.Init.):
DMA模块中有多个通道,此参数指明使用哪一个通道。
我们打开下面这个例子:
在串口初始化的回调函数 HAL_UART_MspInit(UART_HandleTypeDef *huart)中:
__HAL_LINKDMA(huart, hdmarx, hdma_rx);
参考资料:
STM32F030 Reference Manual
扫码关注公众号:
推荐阅读:
嵌入式Linux
微信扫描二维码,关注我的公众号