目录
实验要求
使用 DMA 的方式将内存数据搬运到串口 1 发送寄存器,同时闪烁 LED1 。
CubeMX配置
DMA配置
用到的库函数
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 100
//待发送的数据
unsigned char sendBUF[BUF_SIZE] = {0};
main函数里
int i = 0;
for(i = 0;i<BUF_SIZE;i++)
{
sendBUF[i] = 'Z';
}
//将数据通过串口DMA发送
HAL_UART_Transmit_DMA(&huart1,sendBUF,BUF_SIZE);
while (1)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
HAL_Delay(100);
}
调整DMA配置
相同代码烧录
结果:循环发送