当前位置: 首页 > article >正文

STM32F103单片机使用STM32CubeMX创建IAR串口工程

打开stm32cubeMX,选择新建工程
在这里插入图片描述
输入单片机型号,在下面选中具体型号,然后点右上角 开始工程
在这里插入图片描述
第一步设置 调试接口,否则生成的工程就会下载不到单片机中,使用stlink或者jlink的话,在debug选项中直接选择serial wire

在这里插入图片描述
接下来在左边选中RCC,设置晶振源,我这里使用的是外部时钟,在HSE选项出选择使用外部晶振。
在这里插入图片描述
下面设置串口在左边找到USART1,中间模式选择异步模式。
在这里插入图片描述
接下里设置串口参数,这里直接使用默认值,波特率115200,8位数据位,1位停止位,无校验位,发送和接收模式。
在这里插入图片描述
在NVIC setting选项中使用串口中断,因为程序中要使用串口接收中断。
在这里插入图片描述
接下来设置时钟,选择时钟配置,左下角时钟源选择HSE,然后在HCLK的位置直接输入需要输出的时钟值,这里设置72,按回车键。
在这里插入图片描述
这时会弹出一个对话框,直接点OK。

在这里插入图片描述
这时候软件就会自动计算时钟的分频系数和倍频系数,输出时钟就会自动设置为72MHz
在这里插入图片描述

接下来设置工程名,选择工程存储的位置,设置编译器的类型,和编译器最低版本。这里的编译器选择为IAR。
在这里插入图片描述

下来配置工程,这里选择只添加需要用到的库函数,生成代码时,每个外设单独生成.c和.h文件。

在这里插入图片描述
最后点右上角生成工程按钮,代码生成完之后,直接选择打开工程。
在这里插入图片描述
打开工程之后可以看到串口的初始化代码已经写好了。
在这里插入图片描述
但是此时还不能直接使用串口,还需要自己添加中断和串口接收回调函数。
在usart.c文件中定义一个变量用来存放串口接收到的的数据,注意自己编写的代码要写在注释BEGIN和END之间,这样下次在使用stm32cubeMX生成代码的时候自己编写的代码就不会被删除掉。
在这里插入图片描述
接下来在初始化函数中开启接收中断。
在这里插入图片描述
下面编写串口接收回调函数,串口接收到数据之后,将接收到的数据再发送出去。
在这里插入图片描述
编译代码,无错误,无警告。
在这里插入图片描述
接下来设置仿真器,在工程名上右键,选择options
在这里插入图片描述
左边选择debugger,右边选择jlink
在这里插入图片描述
然后再底下选择jlink/j-Trace选项,右边选择connection,选择SWD接口。如果下载器使用的是4根线的SWD接口,这里一定要记得设置,否则下载程序的时候会报错。
在这里插入图片描述

最后编译下载程序,在串口回调函数中打个断点,使用USB转TTL连接单片机的PA10和PA9引脚,使用串口工具发送一个字母q,可以看到串口中断已经进去了,接收到的数据也是q。说明代码已经正常运行了。
在这里插入图片描述

取消断点,全速运行代码。
在这里插入图片描述
代码正常运行。说明串口通信代码功能已经成功实现。


http://www.kler.cn/a/427973.html

相关文章:

  • 【项目初始化】
  • 步入响应式编程篇(三)之spring webFlux与R2DBC
  • 模型I/O
  • volatile
  • 【MySQL】MySQL客户端连接用 localhost和127.0.0.1的区别
  • docker配置mysql并使用mysql connector cpp编程
  • mac 安装python3和配置环境变量
  • 【Leetcode Top 100】146. LRU 缓存
  • Octo—— 基于80万个机器人轨迹的预训练数据集用于训练通用机器人,可在零次拍摄中解决各种任务
  • 网络资源模板--Android Studio 实现绿豆通讯录
  • 【springboot】 多数据源实现
  • 塑胶模具基本结构及塑胶成型原理
  • ubuntu 使用USB转TTL线连接树莓派4B
  • 【Android】ARouter源码解析
  • Python 信息科技赛课区一等奖教案(语音合成技术)
  • 【Elasticsearch】初始化默认字段及分词
  • Python中的数据可视化实战
  • spring-boot-starter-validation校验启动器简述
  • 基于SpringBoot校园台球厅人员与设备管理系统设计与实现
  • JavaScript Server-Sent Events (SSE) 教程
  • 国产GPU中,VLLM0.5.0发布Qwen2.5-14B-Instruct-GPTQ-Int8模型,请求返回结果乱码
  • 宝塔控制面板phpMyadmin打开卡主加载中状态
  • Spring Boot教程之二十一:文件处理
  • 样品前处理工作站自动化操作
  • JavaWeb学习(4)(四大域、HttpSession原理(面试)、SessionAPI、Session实现验证码功能)
  • lua 一个简单的table变量序列化和日志写入函数