stm32实现串口通信和LED灯点亮

article/2025/10/14 11:01:30

stm32串口通信

  • 串口协议和RS—232标准
    • RS232电平与TTL电平的区别
      • USB/TTL转RS232
  • CH340串口安装
    • 安装stm32cubemx并编写程序
      • 实现led灯的周期闪烁
  • 用stm32完成USART串口通信
    • 接下来进行波形观察
      • 总结
  • 两个工程完整代码

串口协议和RS—232标准

串口通信协议:是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485
RS—232标准:RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。因此,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成rs232类型,再交叉连接。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。

RS232电平与TTL电平的区别

TTL标准:
TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。
RS232标准:
逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,注意电平的定义反相了一次

USB/TTL转RS232

USB转TTLSTM32F103C8T6
GNDG
3V33V3
RXDPA9
TXDPA10

CH340串口安装

在这里插入图片描述
双击安装即可,检查是否安装成功,插入USB串口后,点击设备管理器,检查端口是否有CH340
在这里插入图片描述

安装stm32cubemx并编写程序

链接:STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics
傻瓜式安装,把所有的框都选上
安装完成后,点击help,下载依赖包
在这里插入图片描述
下载完成后,选择自己的芯片,选择前面的复选框下载,绿色代表下载好了
你们选择后,点击install now就行
在这里插入图片描述
下载完成后回到home界面。点击图中的地方,创建新项目
在这里插入图片描述
点击part name输入自己的芯片,以stmc8t6
为例,之后中间出现的信息点击之后,在点击start project
在这里插入图片描述
点击system core,进入里面的sys,在debug那里选择serial wire
在这里插入图片描述
在这里插入图片描述
接下来进行配置时钟,进入rcc,有两个时钟hse,lse,我们要用GPIO借口,这些接口在APB2里
观察时钟架构,APB2由hse时钟控制,同时在这个界面把PLLCLK右边选上
在这里插入图片描述
所以我们把hse那里设置为crystal/ceramic resonator就行了
在这里插入图片描述
接下来就是点击相应的引脚设置输出寄存器,output哪一项,一共三个PA7
PB9 PC15
在这里插入图片描述
接下来点击system core里的GPIO,点击引脚名,把输出等级改为hight
mode不用改
在这里插入图片描述
点击project manager 配置好自己的路径名和项目名,然后改IDE为MDK—ARM
在这里插入图片描述
进入code generate界面,选择生成初始化文件.c/.h,之后在点击generate code就行了
在这里插入图片描述
打开刚刚生成的项目将main.c的主函数部分用下列函数代替

SystemClock_Config();//系统时钟初始化MX_GPIO_Init();//gpio初始化while (1){		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);//PA7亮灯HAL_Delay(500);//延时0.5sHAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);//PA7熄灯HAL_Delay(500);//延时0.5s		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9亮灯HAL_Delay(500);//延时0.5sHAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯HAL_Delay(500);//延时0.5sHAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯HAL_Delay(500);//延时0.5sHAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯HAL_Delay(500);//延时0.5s}

在这里插入图片描述
在烧录运行,串口要断电置boot0为0,之后即可编译运行成功

实现led灯的周期闪烁

USB转TTLSTM32F103C8T6
GNDG
3V33V3
RXDPA9
TXDPA10

进入flymcu进行烧录
在这里插入图片描述
效果图如下
在这里插入图片描述

用stm32完成USART串口通信

打开stm32cubeMX,进入我的工程,选择芯片,开始进入
在这里插入图片描述
接下来选择时钟配置
在这里插入图片描述
设置USART2,点击MODE,选择Asynchronous
在这里插入图片描述
接着点击CLOCK configurstion选择HSE,PLLCLK
在这里插入图片描述
设置中断,在NVIC SEtting中点击Enabled
在这里插入图片描述
后面设置路径,只需要修改Application Structure为Basic,在Toolchain/IDE为MDK—ARM,在Code generate勾选生成项目
在这里插入图片描述
在这里插入图片描述
后面生成工程打开即可
只需要把main.c里面的程序改为下列代码

char data[]="hello windows!\n";//发送的数据
HAL_UART_Transmit(&huart2, (uint8_t *)data, 15, 0xffff);//发送	
HAL_Delay(1000);//延时

在这里插入图片描述
后面进行烧录
打开串行助手打印出hello windows
在这里插入图片描述

接下来进行波形观察

对keil进行相关操作
在这里插入图片描述
之后打开逻辑分析仪,选择端口,设置bit,运行就可观察到波形
在这里插入图片描述
大约1s一个波形

在这里插入图片描述

总结

通过本次实验我更加了解了stm32cubeMX的分装功能,更加了解到stm32d寄存器映射原理,最终完成了本次实验

两个工程完整代码

链接:https://pan.baidu.com/s/11DImWFKfnLbQDtseEeS8SA
提取码:e8cr


http://chatgpt.dhexx.cn/article/jcQYm3tX.shtml

相关文章

iconCls和el-icon属性对应的图标大全(带图)

千言万语,不如直接上图效果好 element UI el-icon 直接看官网都有,很全 https://element.eleme.io/#/zh-CN/component/icon

ext 中的iconCls配置以及使用以及路径问题

使用过Ext(http://www.extjs.com)的同志都应该知道,每一个组件(Component)在初始化的时候,都会有一个配置参数(Config){在Ext2中,基本上所有的组件的构造函数只接受一个参…

EXT iconCls说明

今天学习ext 看examples中的事例,其中有一个地方是这样写的: new ButtonPanel( Icon Only, [{ iconCls: add16 },{ iconCls: add24, scale: medium },{ …

cls extjs5_73. 解决ExtJS TreePanel 的 iconCls设置问题

转自:https://blog.csdn.net/hanchuang213/article/details/62881568 很久没有写代码了,最近在做一个在线帮助网站,于是又捡起了 ExtJS,我用 TreePanel 做为左边栏的导航树,我希望能够根据节点指向的内容来定义节点的图…

常规功能和模块自定义系统 (cfcmms)—025开发日志(创建iconCls的field)

常规功能和模块自定义系统 (cfcmms)—025开发日志(创建iconCls的field) 这一节是临时插入的工作日志。 在本系统中可以自定义某些图标,图标的样式都是手工录入的,为了能直观的选择iconCls中的图标,开发了此控件。extjs中内置了font-awesome字…

UniGui中使用IconCls

在使用UniGui的时候,我时候我们需要使用系统自己的图标,通常会如下图一样的使用方式: 选择ICON对齐方式及系统定义好的ICON对应值。但实际上UniGui中可以使用的图标远远大于他已定义的这十几个(或者应该说是EXJS原本就多&#xff…

UniGui iconCls字符图标的引用

游览unigui官方论坛,发现了iconCls字符图标的引用功能,测试了一下,很好用。 引用格式:iconCls: {fontCls} {iconPrefix}-{iconName} 例子:iconCls: x-fa fa-home

Easyui-iconCls 的队应图标

(iconCls : ‘icon-cancel’,)(iconCls : ‘icon-add,)(iconCls : ‘icon-edit,) (iconCls : ‘icon-remove,)(iconCls : ‘icon-save,)(iconCls : ‘icon-cut,) (iconCls : ‘icon-ok,)(iconCls : ‘icon-no,)(iconCls : ‘icon-reload,) (iconCls : ‘icon-search,)(iconC…

easyui iconCls属性值

easyui iconCls属性值 icon-add icon-print icon-mini-add icon-cvs icon-play icon-refresh icon-edit icon-help icon-mini-edit icon-pencil icon-remove icon-undo icon-mini-refresh icon-save icon-redo icon-cut icon-back icon-ok icon-sum icon-no icon-tip ico…

拓展07-EasyUI自定义iconCls菜单图标icon

1、效果图 左侧菜单树,和选项卡tabs显示自定义图标。 先推荐一个icon图标下载的网站:https://www.easyicon.net/ 2、iconCls属性 3、准备图标icon 可以从上面推荐的网址下载,基本上各种类型都有 将下载好的图标放入easyui图标文件夹内web…

EXTJs 中icon 与iconCls的区别及用法!

1、这俩个都是引入小图片 区别在于: (1)、icon :"直接写图片在项目上的路径" (2)、iconCls:"css样式名称" icon 显示时为下面的添加: iconCls 显示为下面的添加: 大家都看到区别了吧! 2、iconCls代码&…

分类算法之二——特征提取与特征选择

典型应用——文本分类 1)文本信息的表示,从原始的文本转化为结构化的可处理信息; 2)目前常采用向量空间模型来描述文本向量,通常文本向量维度较高,使得分类效率低下; 3)必须对特…

机器学习5种特征选择的方法!

我们知道模型的性能会随着使用特征数量的增加而增加。但是,当超过峰值时,模型性能将会下降。这就是为什么我们只需要选择能够有效预测的特征的原因。 特征选择类似于降维技术,其目的是减少特征的数量,但是从根本上说,它…

特征选择算法分类

坊间常说:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。 首先,从特征开始说起&am…

特征选择基本思想与relieff算法

特征选择 如果特征参数不足,则很容易引发数据重叠的现象,所有分类器都将不起作用;如果特征参数太多,则可能会消耗大量时间和计算资源。特征选择可以通过消除冗余的特征来提高分类算法的准确性,并减少其计算复杂度。特…

特征选择算法总结

1 综述 (1) 什么是特征选择 特征选择 ( Feature Selection )也称特征子集选择( Feature Subset Selection , FSS ) ,或属性选择( Attribute Selection ) ,是指从全部特征中选取一个特征子集,使构造出来的模型更好。 (2) 为什么要做特征选择 …

特征选择算法 | Matlab实现基于互信息特征选择算法的回归数据特征选择 MI

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 特征选择算法 | Matlab实现基于互信息特征选择算法的回归数据特征选择 MI 部分源码 %--------------------

如何进行特征选择?

特征选择(排序)对于数据科学家、机器学习从业者来说非常重要。好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点、底层结构,这对进一步改善模型、算法都有着重要作用。 特征选择主要有两个功能: 减少特征数量、降维,使模型泛化能力更强,减少过拟合增强对特征和…