• STM32CubeMAX——USART


    首先开启RCC:
    在这里插入图片描述
    然后:开启串口,参数默认:波特率115200,8位数据位,1位停止位,无校验位
    在这里插入图片描述
    然后:配置时钟
    在这里插入图片描述
    最后:生成代码配置
    在这里插入图片描述
    在这里插入图片描述
    生成代码:
    在这里插入图片描述
    Keil5中:添加代码:
    在usart.c中添加
    第一步:

    /* USER CODE BEGIN 1 */
    int fputc(int ch,FILE *f)
    {
    	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
    	return ch;
    }
    /* USER CODE END 1 */
    

    并添加头文件#include<stdio.h>
    第二步:
    然后尝试用串口打印字符串
    在main.c中

    /* USER CODE BEGIN 2 */
    	printf("printf(CubeMAX Pro Test:)
    ");
    /* USER CODE END 2 */
    

    烧写验证

    第三步:
    串口打印冲串口发送的数据
    首先:打开串口中断(其他操作一样)
    在这里插入图片描述
    然后:在main.c开头定义两个数组

    /* USER CODE BEGIN PV */
    uint8_t RxBuf[20];
    uint8_t TxBuf[]="这是要发送的字符串:
    ";
    /* USER CODE END PV */
    

    然后:HAL_UART_Receive_IT我理解是相当于开启接收中断,接收够10字符就触发接收中断

    /* USER CODE BEGIN 2 */
    	printf("printf(CubeMAX Pro Test:)
    ");
    	//HAL_UART_Transmit_IT(&huart1, (uint8_t *)TxBuf, sizeof(TxBuf));
    	HAL_UART_Transmit(&huart1, (uint8_t *)&TxBuf, 10, 0xFFFF);
    	HAL_UART_Receive_IT(&huart1, (uint8_t *)RxBuf, 10);
      /* USER CODE END 2 */
    

    最后在main.c中重构接收完成中断的回调函数

    /* USER CODE BEGIN 4 */
    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
    {
      /* Prevent unused argument(s) compilation warning */
      UNUSED(huart);
      HAL_UART_Transmit(&huart1, (uint8_t *)&RxBuf, 10, 0xFFFF);
      /* NOTE : This function should not be modified, when the callback is needed,
                the HAL_UART_RxCpltCallback can be implemented in the user file.
       */
    }
    /* USER CODE END 4 */
    

    最后:下载验证

  • 相关阅读:
    QT解析和组装json
    linux下磁盘存储空间不足
    linux下的QT打包方法
    linux下编译protobuf
    linux下编译opencv
    linux下的qt串口通信
    QT执行shell脚本及linux指令相关
    windows下QT打包
    启动zookeeper却没有进程
    Linux命令
  • 原文地址:https://www.cnblogs.com/hhsxy/p/14018402.html
Copyright © 2020-2023  润新知