• 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 */
    

    最后:下载验证

  • 相关阅读:
    c++ stl string char* 向 string 转换的问题
    不要在疲惫中工作
    今天
    悠然自得
    忙与闲
    <转>LuaTinker的bug和缺陷
    匿名管道
    SetWindowHookEx 做消息响应
    最近工作
    实现网页页面跳转的几种方法(meta标签、js实现、php实现)
  • 原文地址:https://www.cnblogs.com/hhsxy/p/14018402.html
Copyright © 2020-2023  润新知