stm32芯片点亮LED灯(实物仅芯片)入门级+软件示波器查看输出

本文采用stm32f103,基于标准库工程,实现的结果是使芯片上的灯点亮(输出为GPIOC,Pin13号端口),在不需要其余外界接线的条件下,能够最清楚最明了的了解GPIO输出时需要进行的配置。

文章目录

一、了解GPIO的8中输入输出模式

二、程序编写部分

1、端口时钟配置

2、用于GPIO的输出函数

三、点灯环节,程序调试

1、软件调试

2、硬件调试


一、了解GPIO的8中输入输出模式

通过配置GPIO的端口配置寄存器,端口可以配置成一下8种模式:

接下来我们对各个模式进行具体的介绍:

输入浮空:浮空输入模式是一种高阻抗输入模式。在该模式下,引脚不连接到外部电路,处于高阻抗状态。可以通过读取引脚电平来检测外部信号。

上拉输入:上拉输入模式是一种具有内部上拉电阻的GPIO输入模式。在该模式下,引脚连接到外部电路,通过内部上拉电阻来维持默认电平为高电平。

上拉就是把点位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平。电阻同时起到限流的作用。弱强只是上拉电阻的阻值不同,没有什么严格区分

输入下拉:就是把电压拉低,拉到GND。与上拉原理相似。在该模式下,引脚连接到外部电路,通过内部下拉电阻来维持默认电平为低电平。

模拟输入:模拟输入是指传统方式的输入,数字输入是输入PCM数字信号,即0,1的二进制数字信号,通过数模转换,转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的。

模拟输入模式是一种用于ADC(模数转换器)输入的特殊模式。在该模式下,引脚可以接收连续变化的模拟信号,其他情况下一般不该模式。

开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)

数字输出口,可以输出高低电平,输出的高电呈现高组态,没有驱动能力

复用开漏输出:该模式允许将GPIO引脚用作特定外设功能。在该模式下,引脚只能输出低电平,要输出高电平需要通过外部上拉电阻或其他方式。

STM32单片机内部有其他的外设,比如定时器、DAC等。复用开漏输出与普通开漏输出区别在于,开漏输出输出的是输出数据寄存器中的数据,复用开漏输出输出的是来自外设的数据

推挽式输出:可以输出高,低电平,连接数字器件;推挽结构一般是指两个三级管分别受到互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。推挽式输出为数字输出口,可以输出高低电平,高低电平都具有驱动能力。

复用推挽输出:该模式允许将GPIO引脚用作特定外设功能。在该模式下,引脚可以输出高电平或低电平,并具有一定的驱动能力,可以理解为GPIO口被用作第二功能时的配置情况(并非作为通用IO口使用)

二、程序编写部分

1、端口时钟配置

新建一个工程进行主程序编写(用上一篇文章的工程模版创建),打开main.c函数,进行GPIO时钟配置,第一行点击鼠标右键,在弹出的窗口中选择头文件插入,然后编写main函数,再加上while(循环函数),当while后面括号内为1时,即无限循环这段程序。(函数末尾必须空一行)

 接下来我们利用函数调用,建立一个子程序进行配置,我们将函数命名为GPIO_init();

使用RCC_APB2PeriphClockCmd()函数即外设时钟使能或者失能函数,即启动我们所需要使用的GPIO口,这个函数有两个参数,第一个参数是我们要调用的端口,第二个函数即”使能“或”失能“,可以把鼠标放在函数上面,右键选择go to definition ~~~前往查看函数配置,我们使用GPIOC口,即

接下来我们用GPIO_InitTypeDef定义一个具有局部变量的结构体(结构体名字可自行命名),然后对结构体变量进行赋值,输入结构体名称.(名称后加上英文的一点.),出现一个可选窗口,里面三个变量都需要我们赋值,Mode是端口的模式,即上面介绍的8种模式,这里因为我们是点亮led灯,因此选用推挽输出;speed是晶振速度,一般默认使用50MHZ;Pin是端口中的引脚,一般端口有16个引脚,这里我们仅仅使用13引脚。

对端口配置完成后使用GPIO_Init()对端口进行初始化,同样,我们可以右键前往查看函数定义,可以看GPIO_Init()对应两个参数,第一个参数为端口,第二个参数是我们上面定义的结构体,但是要注意的是,这里结构体前要添加&(取址符,可用于函数的值传递等情况)。

这样我们就完成了对端口配置及初始化的子函数编写。

2、用于GPIO的输出函数

上面完成了子函数的编写,接下来我们进行主函数的编写,在主函数的最开始,我们要先把端口进调用初始化,即调用我们上面编写完成的子函数。

在keil5中有四个输出函数,这里我们暂时只用两种,即GPIO_SetBit()以及GPIO-ResetBits(),这两个函数都有两个参数,第一个参数是GPIOX(X代表端口A,B,C等),第二个参数为GPIO_Pin_X(X代表引脚号,即1~16个引脚),setbits是把指定端口设为高电平,restbits把指定端口设定为低电平。这里我们使用芯片上的显示灯,即GPIOC中的13引脚。(本文仅进行对灯进行亮与灭切换,因此不需要使用while循环)

在编写程序的过程中,我们会使用双斜杠//对程序进行注释,增加工程的可读性。

在这里我们先将13引脚置为低电平进行调试观察现象,所以我们将GPIO_SetBits()注释(编辑器不会识别这行程序)。

然后我们对程序进行编译,没有错误后就可进行实验调试阶段。

三、点灯环节,程序调试

1、软件调试

使用软件调试时,先进行系统设置,点击“魔术棒”,然后找到“debug”,如下图所示,更改三个地方,勾选左边软件调试的use simulator,在对下面的两个方框内容进行更改,然后确认。

点击调试图标,打开示波器,弹出的窗口比较小,将光标放至边框边缘拉动放大,如下图

点击示波器左上角的setup,在窗口中新建,然后输入名称PORTC.13(因为我们我监视的是GPIOC的13脚),然后鼠标点击名称下方的空白区,会自动生成PORTC.13开头的一行,将下方的type(类型)更改为Bit,关闭窗口。

然后我们点击调试(快捷键F5),就可以看到示波器出现一条直线,即代表这个端口输出了低电平,或者说这个时候灯已经点亮了(灯为低电平驱动)。

当我们在程序中将输出端口GPIO_SetBits()这一行的注释取消,将GPIO_ResetBits()注释,编译后调试,就会发现输出的曲线在示波器的上方,即端口输出为1。(需要退出调试模式才能修改编译,再次点击调试图标退出软件调试)

2、硬件调试

首先我们要对硬件芯片与ST_LINK V2进行接线,如下图。注意,这里ST_LINK V2用的是下面一排的端口, 3.3v与GND不能接反,否则会烧坏器件。建议接完线再检查一遍。一定是ST_LINK V2方一排的端口(2、4、6、8端口)

接完线我们对软件内的硬件调试进行设置,魔术棒内的debug,界面右边的硬件调试,然后在设置界面选择SW。

然后我们将ST_LINK V2插到电脑usb口上,这时ST_LINK V2上面的灯会亮,然后上面设置 SW的界面会出现特定的序列号,这是证明我们的芯片已经连接上了。

然后我们点击下载,即可将程序烧录至芯片中,我们先烧录13脚输出低电平的情况。

点击下载后,会发现ST_LINK V2上面的灯在闪烁,等到灯变为常亮即下载完成或者是软件状态栏显示ok的字样即可,这是我们可以看到芯片上面亮多了一个灯。

然后我们再讲GPIO_ResetBits()这一行的注释取消,将GPIO_SetBits()注释,编译后下载,发现灯熄灭。

文章如有错误的地方,请大家多多指正。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值