ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【STM32Cube】(六)使用 STM32CubeMX初始化usart(查询发送和查询接收模式)

2019-07-15 15:06:29  阅读:499  来源: 互联网

标签:MDK HAL usart UART 配置 STM32CubeMX 查询 串口 时钟


1. 准备工作

硬件准备

首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi):
在这里插入图片描述

软件准备

  • 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码;
  • 准备一个串口调试助手,这里我使用的是Serial Port Utility

2.生成MDK工程 — 初始化GPIO为输入

选择芯片型号

打开STM32CubeMX,打开MCU选择器:

搜索并选中芯片STM32L431RCT6:

配置时钟源

  • 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
  • 如果使用默认内部时钟(HSI),这一步可以略过;

这里我都使用外部时钟:

配置串口

小熊派开发板板载ST-Link并且虚拟了一个串口,原理图如下:


接下来开始配置USART1

  • 串口基本参数配置:

  • 用户常量配置(不用配置)

  • NVIC配置(不用配置)

  • DMA配置(不用配置)

  • 串口GPIO配置(默认即可)

配置时钟树

STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:

生成工程设置

代码生成设置

最后设置生成独立的初始化文件:

生成代码

点击GENERATE CODE即可生成MDK-V5工程:

3. 在MDK中编写、编译、下载用户代码

测试发送

因为我们配置的时候没有使用中断,所以接下来我们直接使用HAL库的函数发送即可:
编写main函数:

int main(void)
{
  char str[1] = {0};
  
  HAL_Init();

  SystemClock_Config();

  MX_USART1_UART_Init();
  
  HAL_UART_Transmit(&huart1, (uint8_t*)str, 12, 0xFFFF);

  while (1)
  {
  		/*  最大输入10个字节 */
		if(HAL_OK == HAL_UART_Receive(&huart1,(uint8_t*)recv_buf,10,0xFFFF))
		{
			HAL_UART_Transmit(&huart1, (uint8_t*)recv_buf, 10, 0xFFFF);
		}
  }
}

然后编译整个工程:

最后进行下载设置:


最后点击下载即可:

实验现象如下:

标签:MDK,HAL,usart,UART,配置,STM32CubeMX,查询,串口,时钟
来源: https://blog.csdn.net/Mculover666/article/details/95941795

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有