基于stm32CubeMX(Hal库)的stm32串口通信

目录

一. 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理

1.1 串口通信协议概念

1.2 RS-232标准

1.3TTL标准

二. 安装 stm32CubeMX,配合Keil,使用寄存器方式(汇编或C,不限) 或HAL库这两种方式,完成下列任务:

2.1 安装Java

2.2安装 stm32CubeMX

2.3 安装固件库

三、重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。

3.1 原理图 

3.2 创建项目

3.2.1  双击进入stm32f103c8 

        点击System Core,进入里面的SYS,在debug那里选择Serial Wire

3.2.2 将system clock mux从HSI设为PLLOCK

3.2.3 右边选择要使用到的引脚,本文主要选择PA12,PB1,和PC14,并点击GPIO_Output

  3.2.4 接下来建立项目,输入项目名称和项目地址,在Toolchain/IDE选择MDK-ARM

3.2.5 进入code generate界面,选择生成初始化.c/.h文件,后面点击generate code

 3.2.6 打开文件夹

3.2.7 打开生成的project文件

3.2.8 在while循环中加入亮灯熄灯代码 

 3.2.9 编译成功

 3.2.10 选择hex文件并通过串行口烧录

 3.2.11 烧录

3.2.12 实验成果

四、完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式)

4.1 创建项目

 4.2 添加代码

4.3 程完成情况如图且生成hex文件

4.4烧录与接收

五、在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察第1题中3个GPIO端口的输出波形,和第2题中串口输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。

5.1设置

5.2 点击Run运行程序

5.3 观测波形

5.4 串口调试代码分析波形

六、总结

七、参考链接


 

一. 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理

1.1 串口通信协议概念

串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。

1.2 RS-232标准

RS232采用负逻辑电平,定义如下:

电平状态 电压
0(space) +3 ~ +15V
1(mark) -15 ~ -3V
非法状态 -3 ~ +3V

1.3TTL标准

输出 L: <=0.8V ; H:>=2.4V。

  输入 L: <=1.2V ; H:=>2.0V

  TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。于是TTL电平的输入低电平的噪声容限就只有(0.8-0)/2=0.4V,高电平的噪声容限为(5-2.4)/2=1.3V。

1.4 "USB/TTL转232"模块(以CH340芯片模块为例)的工作原理

TXD:发送端,一般表示为自己的发送端,正常通信必须接另一个设备的RXD。

RXD:接收端,一般表示为自己的接收端,正常通信必须接另一个设备的TXD。
正常通信时候本身的TXD永远接设备的RXD!

自收自发:正常通信时RXD接其他设备的TXD,因此如果要接收自己发送的数据顾名思义,也就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障。也称回环测试。
 

二. 安装 stm32CubeMX,配合Keil,使用寄存器方式(汇编或C,不限) 或HAL库这两种方式,完成下列任务:

2.1 安装Java

由于STM32CubeMX是Java实现的,需要安装jdk环境。

jdk官网下载链接:
Java Downloads | Oracle

 

此时关闭就是安装成功了。 

 

2.2安装 stm32CubeMX

下载地址:
STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics

选择第三个Windows系统的就行。

 

 

安装过程如图所示。注意安装路径不要出现中文就行。

2.3 安装固件库

 打开cubeMX,在help下选择manage

 

 

此处选择install now  第一个是本地下载 ,仅对于已有固件库的电脑。 

 

 

 

 

三、重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。

3.1 原理图 

3.2 创建项目

 

3.2.1  双击进入stm32f103c8 

        点击System Core,进入里面的SYS,在debug那里选择Serial Wire

3.2.2 将system clock mux从HSI设为PLLOCK

接下来设置时钟RCC,在High Speed Clock选择Crystal/Ceramic Resonator

 

 

3.2.3 右边选择要使用到的引脚,本文主要选择PA12,PB1,和PC14,并点击GPIO_Output

将GPIO output level选择high 

GPIO output level:有low和high两种选择,一般选择low
GPIO mode:推挽输出和开漏输出两者模式,两者模式的区别在于推挽输出中1代表VCC,0表示GND;开漏输出中1代表高阻态,0代表GND。
GPIO Pull-up/Pull-down:输入需要上下拉,输出一般没有上下拉
Maxinum output speed:最大的输出速度,一般选择low就可以了。


 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值