分享

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

 印度阿三17 2019-07-15

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);
		}
  }
}

然后编译整个工程:

最后进行下载设置:


最后点击下载即可:

实验现象如下:

来源:https://www./content-4-329651.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多