STM32输出

GPIO理论:(A15,B3,B4口先别选)

1.简介

容忍5V是可以输入5V电压,输出最大是3.3V(手册中带FT的,可以容忍5V)

392ab91b55974168bf5a045fd87cb4fc.jpeg2.基本结构

1ce66ea66d8d4e4bb007cecb30497993.jpeg

外设名称如GPIOA,16个引脚,从0到15。

在每个GPIO模块内,包含了寄存器和驱动器,内核通过APB2总线对寄存器读写,完成输出输入电平,寄存器(32位,因为32是32位)每一位对应一个引脚,低16位有用,高16位没有用到。

驱动器负责增大驱动能力

f6c78506e82046d2bcf1b4ec4174e51c.jpeg

保护二极管:端口电压在0-3.3V

上半部分输入:可以控制上拉(高)下拉(低)电阻控制输入还是输出,有开关控制,上面打开是上拉,两个都断开是浮空输入模式。如果输入引脚啥也不接,处于浮空状态,容易受外界干扰,为了避免这个情况,就需要加上拉或者下拉,上拉会保证引脚的高电平,下拉会低电平。输入时候会有限幅电路限制幅度;施密特触发器(上下限阈值,只有高于上限或低于下限,才会变化,避免信号波动造成抖动);模拟输入在施密特后面。

下半部分输出:控制某一位:①先读寄存器,用按位与、或设置②位设置寄存器写0或1;在位清除寄存器写1会清除;③“位带”区域,读写地址的数据(与51相似)。输出控制右边的不太懂。

3.GPIO模式

75912989c0eb4fe5bc47f4140a9577a4.png

在输入模式下,输出无效;输出模式下,输入有效;除了模拟输入时会关闭数字输入,其他都不会。

LED与蜂鸣器

LED长脚正极,短脚负极;内部较小的正极,大的负极;

蜂鸣器按驱动方式的原理可分为有源蜂鸣器(内含驱动线路),正负极接上直流电压即可持续发生,频率固定。还有无源蜂鸣器(外部驱动),需要控制器提供震荡脉冲;

13324b3278cd4d8bbd32551e28942c0d.jpeg

LED分别是高电平和低电平驱动,多使用上面的(低,PA0是低电平),高电平弱驱动,低电平强驱动。

蜂鸣器上面是PNP,基极低电平,三极管导通;基极高电平,三极管截止。下面是NPN,与PNP相反,一般电路图就按图中的。

外设

所谓外设,是指将特定功能做成一个模块,然后给出控制端口,让处理器来控制。只要处理器给了足够的信息,外设就能完成特定的一组任务。

通过程序配置外设来完成我们想要的功能,

927121c9f0824e8a8e05b23f0794f3d5.png

7c74eefa641a41b5bf841e08bd43917a.png

时钟

1806eabfd53a4cd991ce0b1bb8ec22a8.png

LED闪烁实验

1.搭建硬件电路

88234043b7fc462d919e23ff8bc6775a.png

6d39e2b0e10b42f6ba5d0b4c335962da.jpeg

采用低电平点亮,没有接限流电阻。

2.建立项目

可以看视频

3.配置外设

RCC和GPIO两个外设,在library中可以找到库函数

742046f5713d43afba424c32c8f32d77.png

9c53bf4a9260434cac6b42a8d9b11867.png

RCC外设中常用692、693、694的函数,右键可以跳转到定义,查看函数参数和介绍。692的第一个参数是选择哪个外设,第二个是使能或失能。

GPIO外设中常用349、353-360。

操作:

1.使用RCC开启GPIO的时钟,在RCC外设库函数中选择函数,使能时钟,看搭载的线选择RCC的外设,调用这个函数后,跳转定义查看参数,LED中是GPIOA口,复制参数(实质还是配置寄存器,更方便)

039cce07c5d1454cb80edc28589ffbe5.png

1d42375e3fac40f1a614d1d0280d3fba.png

2.使用GPIO_Init函数初始化GPIO(配置端口模式)

参数:一是选择哪个GPIO,二是参数的结构体。先定义结构体,在用.引出参数,跳转参数,(出现多个定义时候点击member)Ctrl+F搜索定义的位置。

补充:

0f6b42ced96e4f58b4f29dbd003f0a08.png

3.使用输出/输入的函数控制GPIO口

2cd3ab3ec2104c519829a8416f4e49f8.png

第一个:端口设置高电平

二:低电平

三:前两个指定端口

四:选择外设,对16个端口进行写入操作

用第三个写的

7136fde4de35417591f0389bd2d1ac7a.png

46c61106536d4fbf9fd51a421ac2747f.jpeg

4.LED闪烁

需要延时函数,用现成的,在项目下建立system文件夹,把代码放进去,在keil中添加组,添加system,往里面添加两个delay,再点击魔术棒,选C/C++,添加新文件夹的头文件路径,有三个延时函数,用定时器实现的;还要在C文件上面写#include"Delay.h"

o3d36b86dd71574186b95869374f06b585.png

8c0f1a54b2a94ca0b38fe14408447ffb.jpeg

5.LED流水灯

直接复制工程,修改keil文件就可以

eb672bc5ba1a43b8a482a8b05f5ba9fa.jpeg

需要修改代码,配置8个端口,进行按位或GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3

或者是同时选择16个端口。低电平点亮要取反

e7afa017017a4fdb9db1aebec7c3981d.jpeg

蜂鸣器

e91cf3683aa646948dd8457020184332.jpeg

I/O控制级随便选一个I/O口,但是A15\B3\B4先不要选,这三个口默认是JTAG的调试端口,如果要用做普通端口,还需要再进行配置,还是推挽输出,改成B12

GPIO函数

GPIO_SetBits(bit:位),高电平

GPIO_ResetBits  低电平

GPIO_WriteBit  第三个参数用于选择高电平还是低电平。

GPIO_Write  对整个GPIO16个端口控制,只能用16进制来写,0000 0000 0000 0001,最低位是GPIO0,依次往上

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Matlab中实时绘制STM32输出电压波形,你可以按照以下步骤进行操作: 1. 首先,确保你已经连接好STM32和电脑,并且能够通过串口或其他通信方式从STM32读取到输出电压数据。 2. 在Matlab中创建一个实时绘图的窗口,可以使用Matlab自带的函数`figure`来创建一个新的图形窗口,可选指定窗口的标题和大小。 3. 在窗口中创建一个绘图区域,可以使用`subplot`函数来创建一个绘图区域,参数指定区域的行数、列数和当前区域的编号。 4. 编写一个循环程序,不断从STM32读取输出电压数据并绘制到绘图区域中。可以使用Matlab的`serial`函数打开串口,设置串口的参数,然后使用`fscanf`函数读取串口传输的数据。 5. 在循环程序中,使用`plot`函数将读取到的输出电压数据绘制到绘图区域中。可以设置绘图参数,如线条颜色、线型和图例等。 6. 在循环程序中使用`drawnow`函数来刷新绘图区域,以实现实时展示输出电压波形的效果。 7. 循环程序最后可以根据需要添加一些额外的功能,例如保存绘图结果、显示实时数据等。 请注意,以上步骤仅为参考,具体的实现方式可能会因为硬件设备和程序逻辑等因素而有所差异。你需要根据具体的需求和环境来调整代码。另外,为了实现较高的实时绘图效果,你可能还需要注意提高数据读取和绘图的速度,例如设置合适的数据传输速率、优化程序性能等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值