zoukankan      html  css  js  c++  java
  • 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 */
    

    最后:下载验证

  • 相关阅读:
    输入输出,数据类型,运算符
    queue与pair
    迪杰斯特拉算法学习
    IP地址/数字表示学习
    作业与进程的关系
    直写和回写学习
    OS中的时空局部性
    scanpy包的预处理函数学习
    keras编译与训练过程
    力扣:前缀和、差分题目
  • 原文地址:https://www.cnblogs.com/hhsxy/p/14018402.html
Copyright © 2011-2022 走看看