DMA案例 内存到外设搬运
需求
使用DMA的方式将内存数据搬运到串口1发送寄存器,同时闪烁LED1。
用到的库函数
HAL_UART_Transmit_DMA
HAL_StatusTypeDef HAL_UART_Transmit_DMA(
UART_HandleTypeDef *huart, // 参数一
uint8_t *pData, // 参数二
uint16_t Size // 参数三
)
参数一:UART_HandleTypeDef *huart 串口句柄
参数二:uint8_t *pData 待发送数据首地址
参数三:uint16_t Size 待发送数据返回值
返回值:HAL_StatusTypeDef,HAL状态(OK,busy,ERROR,TIMEOUT)
代码实现
- 准备数据
- 将数据通过串口DMA发送
#define BUF_SIZE 1000
unsigned char sendBuf[BUF_SIZE] = {0};
int i = 0;
// 准备数据
for(i = 0; i < BUF_SIZE; i++){
sendBuf[i] = 'A';
}
// 将数据通过串口DMA发送
HAL_UART_Transmit_DMA(&huart1, sendBuf, BUF_SIZE);
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
HAL_Delay(100);
}