文章目录

  • 一. 环境
  • 二. 使用STM32CubeMX
    • 1. 安装固件库
    • 2. 工程设置
  • 三. USART串口通信
    • 1. UART函数库介绍
    • 2. 代码编写
    • 3. 最终效果
  • 四. 软件调试
  • 五. 总结
  • 六. 后续

一. 环境

  • 硬件:stm32f103c8t6 核心板
  • 软件:STM32CubeMX 6.3.0
  • 软件:keil5 mdk

二. 使用STM32CubeMX

1. 安装固件库

若点击 Manage embedded software packages 后,出现失败,则需要随便点击其它任一选项,进行下载一些文件,比如点击 file->new project ,等下载后,在进行安装固件库。

选择自己开发板的固件库,我这里是f1的。选择版本安装,我这里已经安装过了。

2. 工程设置

  1. 点击 file -> new project 建立工程

  1. 按步骤即可。搜索型号,选择合适的型号进行工程建立

  1. 进行系统调试及基准时钟配置。点击 System Core下拉栏中的 SYS。选择debug调试接口。我选择 serial Wire

SW模式就选择serial Wire。JTAG模式就选择JTAG,4pin和5pin的区别多了一个复位引脚

stlink调试就是SW模式,jlink调试就是JTAG模式

  1. 进行时钟RCC选项配置。点击 System Core下拉栏中的 RCC。可以都选外部晶振Crystal/Ceramic Resonator。

第二个LSE可以不设置,图上我设置了第二个,实际我取消了这个设置,设置了不影响。

BYPASS Clock Source(旁路时钟源)

Crystal/Ceramic Resonator(石英/陶瓷 晶振)

  1. 进行系统具体时钟配置。点击“Clock Configuration”选项栏进入时钟树配置界面。
  • 2.选择外部时钟HSE 8MHz
  • 3.PLL锁相环倍频9倍(8*9=72)
  • 4.系统时钟来源选择为PLL
  • 5.设置APB1分频器为 /2

  1. 设置串口。这里选择USART1。串口配置的引脚为 PA9、PA10。

第三步中 设置MODE为 异步通信(Asynchronous)

第四步中参数设置 波特率为115200 Bits/s,传输数据长度为8 Bit,奇偶检验无,停止位1。以及下面未显示出的 接收和发送都使能

  1. 设置完成后,点击 Project Manager 选项,进入工程设置界面,选择 Project 选项。

不管工程名称还是路径都不要有中文,否则后面编译文件会出错。

Project Name:工程名称

Project Location:点击后面的"Browse"选择你想要将生成的工程保存到哪个目录里面。

Application Structure:应用程序结构

  • Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)
  • Advanced:相反就是包含中间件,一般针对相对复杂一点的工程。

Toolchain/IDE:根据你用的编译软件进行选择 使用KEIL就选择keil的对应版本。不要高于版本

其他默认。

  1. Code Generator 选项可以进行默认。这里我多勾选一个。

  1. copy all used libraries into the project folder复制所有库文件(不管工程需要用到还是没用到)到生成的工程目录中,此做法可以使在不使用Cubemx或者电脑没有安装cubemx,依然可以按照标准库的编程习惯调用HAL库函数进行程序编写。

  2. Copy only the necessary library files只复制必要的库文件。这个相比上一个减少了很多文件。比如你没有使用CAN、SPI…等外设,就不会拷贝相关库文件到你工程下。

  3. Add necessary library files as reference in the toolchain project configuration file在工具链项目配置文件中添加必要的库文件作为参考。这里没有复制HAL库文件,只添加了必要文件(如main.c)。相比上面,没有Drivers相关文件。

  4. Generate peripheral initialization as a pair of’.c/.h’ files per peripheral每个外设生成独立的.C .H文件,方便独立管理。不勾:所有初始化代码都生成在main.c 勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。

  5. Backup previously generated files when re-generating在重新生成时备份以前生成的文件。重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。

  6. keep user code when re-generating:重新生成代码时,保留用户代码(前提是代码写在规定的位置。也就是生成工程文件中的BEGIN和END之间。否则同样会删除。后面会根据生成的工程进行说明)

  7. delete previously generated files when not re-generated:删除以前生成但现在没有选择生成的文件 比如:之前生成了led.c,现在重新配置没有led.c,则会删除之前的led.c文件。(此功能根据自身要求进行取舍)

  1. 点击 GENERATE CODE 生成代码。然后打开工程

  1. 编译代码。编译无误

三. 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:发送的字节数
  • Timeout:最大发送时间,发送数据超过该时间退出发送

举例:

HAL_UART_Transmit(&huart1, (uint8_t *)"diyu", 4, 0xffff);   //串口发送4个字节数据,最大传输时间0xfff

2. 代码编写

在文件 main.c中的while循环里添加代码

while (1){/* USER CODE END WHILE *///添加下面两行代码HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);HAL_Delay(1000);  //延时1s/* USER CODE BEGIN 3 */}

3. 最终效果

如果你想了解如何使用串口中断,以及DMA中断,可以查看文章末尾,我给了相应链接

编译,将程序烧录或下载进核心板,打开串口助手查看接收到的数据。

波特率、停止位、数据位、校验位要与配置的一致

串口助手蓝奏云链接:

https://diyugreat.lanzouw.com/icW9Ovtl7yh 密码:a2kb

你也可以使用windows商店中的串口调试助手,非常好用!

四. 软件调试

  1. 点击魔法棒,设置debug。勾选Use Simulator 使用软件调试。更改 Dialog DLL 以及 Parameter

Dialog DLL 设置为 DARMSTM.DLL 和 TARMSTM.DLL

Parameter 都设置为 -pSTM32F103C8 (后面跟的是芯片型号)

  1. 点击方框内,开始调试

  1. 打开 logic analyzer窗口,进行波形分析

  1. 点击 Setup 选项

  1. 点击方框 新建 。输入 USART1_SR

类型设置为比特流,并可以选择设置波形颜色。设置完就可以点击下方 Close 退出了

  1. 点击方框内 run开始

  1. 查看波形

五. 总结

总体而言还是很简单的,只要了解了HAL库中的串口部分的函数,然后调用即可。

参考链接:

STM32CubeMX系列教程06_Project Manager工程管理器详细说明_strongerHuang-CSDN博客
【STM32】HAL库 STM32CubeMX教程四—UART串口通信详解_Z小旋-CSDN博客_hal_uart_transmit

六. 后续

STM32CubeMX实现串口中断通信_diyu-CSDN博客
STM32CubeMX实现串口DMA中断通信_diyu-CSDN博客

STM32CubeMX实现串口通信相关推荐

  1. STM32CubeMX实现串口通信(中断方式)

    目录 一.STM32CubeMX工程创建 1.题目要求 2.配置STM32CubeMX工程 2.1 时钟的设置 2.2 USART的配置 二.Keil工程的创建 三.效果展示 总结 一.STM32Cu ...

  2. STM32CubeMX实现串口DMA中断通信

    文章目录 一. 环境 二. 使用STM32CubeMX 三. USART DMA中断通信 1. UART函数库介绍 2. 编写代码 3. 最终效果 四. 软件调试 五. 总结 一. 环境 硬件:stm ...

  3. STM32CubeMX实现串口中断通信

    文章目录 一. 环境 二. 使用STM32CubeMX 三. USART中断通信 1. UART函数库介绍 2. 编写代码 3. 最终效果 四. 软件调试 五. 总结 一. 环境 硬件:stm32f1 ...

  4. STM32CubeMX实现USART串口通信

    文章目录 一.实验环境 二.STM32CubeMX的安装 三.使用STM32CubeMX完成串口通信 1. 安装固件库 2.工程设置 四.USART串口通信 1. UART函数库介绍 2.代码编写 3 ...

  5. 【嵌入式系统基础实验一】-----led流水灯及串口通信的HAL库方式和寄存器编程方式实现,输出波形检测

    文章目录 1.实验知识点简要解析 1.1串口通信协议 1.2 RS232.485电平与TTL电平的区别 1.3 USB/TTL转232"模块 2.LED流水灯的寄存器地址 和HAL库这两种方 ...

  6. 【stm32CubeMX】STM32F103c8t6串口通信

    [stm32CubeMX]STM32F103c8t6串口通信发送'hello windows' 一.串口通信协议 1.UART协议 2.RS-232 3.RS-485 二.USB转TTL 三.配置Cu ...

  7. STM32CubeMX基于HAL库实现简单串口通信

    STM32CubeMX基于HAL库实现简单串口通信 板子:STM32F103C8 编译工具:Keil+STM32CubeMX 烧录工具:FlyMcu 串口调试程序:XCOM 实验要求: 1)设置波特率 ...

  8. 安装STM32CubeMX,stm32串口通信

    目录 一.串口通信和RS-232标准 1.串口通信 波特率 数据位 停止位 奇偶校验 2.RS-232标准 二.安装STM32CubeMX,搭建STM32的开发环境 1.安装jdk 2.安装STM32 ...

  9. STM32CubeMX(2)——串口实现HC-05蓝牙模块与手机通信

    STM32实现蓝牙与手机通信 使用的蓝牙 STM32Cubemax配置 手机连接蓝牙 代码编写 总结 使用的蓝牙 本文使用的蓝牙是市面上常用的HC-05蓝牙模块 其引脚和STM32的连接为 蓝牙模块 ...

最新文章

  1. 长期分享干货的技术大佬
  2. NLP(5) | 命名实体识别
  3. Java IO流之文件流
  4. 动态添加 ajax,ajax动态的添加内容【原创】
  5. Oracle Buffer Cache的keep、recycle、default pool概念图解
  6. SQLite和MySQL数据库的区别与应用
  7. leetcode 1218 python
  8. Number类型及方法(js)
  9. typora高级设置字体_设计黑金风格高级感logo
  10. AD学习之旅(9)— 新建PCB封装库
  11. ONVIF协议基础概念
  12. 平方矩阵 II--C++ 经典解析版-----编程/算法/数据结构
  13. HTML为标题栏添加图片
  14. 百度文心一言推出内测专用独立 App;暴雪回应被网易起诉:未收到相关诉状;iOS 17或支持第三方应用商店 | 极客头条
  15. 商品属性的选择功能的实现
  16. docker磁盘清理
  17. 解析:未来物联网发展的十大趋势
  18. go内存分析工具介绍--pprof
  19. 光网视与您相约安防工程高级管理人员培训--江苏站
  20. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘emp

热门文章

  1. 【mindgo】 彼得林奇PEG价值选股策略
  2. ORB特征提取和匹配
  3. 创建目录public html,php CI如何实现全站静态生成html,动态创建目录
  4. 八零后网瘾少年如何翻身逆袭
  5. 组队学习(数列极限)
  6. Datatable删除
  7. Python+winreg+netifaces查看网络接口信息
  8. 网络爬虫之BeautifulSoup和lxml
  9. PySnooper – 永远不要使用print进行调试
  10. flex 实现左边固定右边自适应布局