前言
- 使用STM32CubeMX实现串口通信
- 硬件:stm32f103c8t6 核心板
- 软件:STM32CubeMX 6.3.0
- 软件:keil5 mdk
一、使用STM32CubeMX
1. 安装固件库
若点击Manage embedded software packages 后,出现失败,则需要随便点击其它任一选项,进行下载一些文件,比如点击 file->new project ,等下载后,在进行安装固件库。
选择自己开发板的固件库
2. 工程设置
点击 file -> new project 建立工程 2.搜索型号,选择合适的型号进行工程建立 3. 进行系统调试及基准时钟配置。点击 System Core 下拉栏中的 SYS 。选择debug 调试接口。我选择 serial Wire
SW 模式就选择serial Wire 。JTAG 模式就选择JTAG ,4pin和5pin的区别多了一个复位引脚 stlink 调试就是SW 模式,jlink 调试就是JTAG 模式
- 进行时钟
RCC 选项配置。点击 System Core 下拉栏中的 RCC。可以都选外部晶振Crystal/Ceramic Resonator 。 - 进行系统具体时钟配置。点击
Clock Configuration 选项栏进入时钟树配置界面。
1.选择外部时钟HSE 8MHz 2.PLL锁相环倍频9倍(8*9=72) 3.系统时钟来源选择为PLL 4.设置APB1分频器为 /2
- 设置串口。这里选择USART1。串口配置的引脚为 PA9、PA10。设置MODE为 异步通信(Asynchronous)
参数设置 波特率为115200 Bits/s,传输数据长度为8 Bit,奇偶检验无,停止位1。 - 设置完成后,点击
Project Manager 选项,进入工程设置界面,选择 Project 选项。 - 点击
Code Generator ,勾选Generated files - 点击
GENERATE CODE 生成代码。然后打开工程 - 编译代码。编译无误
二、USART串口通信
1.UART函数库介绍
结构体以及函数定义均在头文件: stm32f1xx_hal_uart.h
UART结构体定义:
UART_HandleTypeDef huart1;
串口发送/接收函数
HAL_UART_Transmit():串口发送数据,使用超时管理机制
HAL_UART_Receive():串口接收数据,使用超时管理机制
HAL_UART_Transmit_IT():串口中断模式发送
HAL_UART_Receive_IT():串口中断模式接收
HAL_UART_Transmit_DMA():串口DMA模式发送
HAL_UART_Transmit_DMA():串口DMA模式接收
串口发送数据:
HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
功能:串口发送指定长度的数据。如果超时没发送完成,则不再发送,返回超时标志(HAL_TIMEOUT)。 参数:
*UART_HandleTypeDef huart :UART结构体( huart1)*pData :需要发送的数据Size :发送的字节数最大发送时间 :发送数据超过该时间退出发送
2.线路连接
实物连接
3.代码编写
代码如下:
#include "stm32f10x.h"
#include "Delay.h"
#include "Serial.h"
int main(void)
{
Serial_Init();
while (1)
{
Serial_SendString("Hello world!\r\n");
Delay_ms(500);
}
}
4.测试结果
编译,将程序烧录或下载进核心板,打开串口助手查看接收到的数据。
5.软件调试
-
点击魔法棒,设置debug。勾选Use Simulator 使用软件调试。更改 Dialog DLL 以及Parameter -
点击方框内,开始调试,并打开logic analyzer 窗口,进行波形分析 -
点击 Setup 选项,点击蓝色方框,输入USART1_SR ,类型设置为比特流,并可以选择设置波形颜色。设置完就可以点击下方 Close 退出了 -
编译查看波形
三、总结
通过本次实验,熟悉了使用STM32CubeMX实现了USART串口通信。
四、参考资料
STM32CubeMX实现串口中断通信 STM32最小核心板F103串口通信USART
|