发新帖我要提问
12
返回列表
打印
[开发工具]

STM32CubeMX_08 | 使用USART发送和接收数据(DMA模式)

[复制链接]
楼主: deadtime
手机看帖
扫描二维码
随时随地手机跟帖
21
deadtime|  楼主 | 2020-4-4 14:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
修改main函数

int main(void)
{
  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART1_UART_Init();

  /* USER CODE BEGIN 2 */
  HAL_UART_Transmit(&huart1, (uint8_t*)dat, sizeof(dat), 0xFFFF);
  HAL_UART_Receive_DMA(&huart1, recv_buf, 13);  //使能DMA接收
  /* USER CODE END 2 */

  while (1)
  {
  }
}

使用特权

评论回复
22
deadtime|  楼主 | 2020-4-4 14:29 | 只看该作者
添加串口接收中断回调函数

/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    //将接收到的数据再发送
    HAL_UART_Transmit(&huart1,recv_buf,13, 0xFFFF);
}
/* USER CODE END 4 */

使用特权

评论回复
23
deadtime|  楼主 | 2020-4-4 14:29 | 只看该作者
实验现象

使用特权

评论回复
24
deadtime|  楼主 | 2020-4-4 14:30 | 只看该作者
至此,我们已经学会了如何配置USART使用DMA模式发送数据和接收数据,下一节将讨论实现printf()函数的多种方法。

使用特权

评论回复
25
sgq151679| | 2020-4-4 23:41 | 只看该作者
谢谢分享

使用特权

评论回复
26
caoenq| | 2020-4-26 15:31 | 只看该作者
deadtime 发表于 2020-4-4 14:26
4. 使用DMA接收串口数据
说明
      使用HAL库的时候不能同时使用DMA发送和接收数据,会出错。

请问楼主,HAL库的串口为何发送和接收不能同时使用DMA?是这个库的问题?还是单片机自身硬件就这样设计的?

使用特权

评论回复
27
磨砂| | 2020-5-6 16:23 | 只看该作者
速度能达到多少

使用特权

评论回复
28
晓伍| | 2020-5-6 16:23 | 只看该作者
代码非常详细

使用特权

评论回复
29
八层楼| | 2020-5-6 16:24 | 只看该作者
非常感谢楼主分享

使用特权

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

本版积分规则