设为首页 - 加入收藏
广告 1000x90
您的当前位置:主页 > 教程 > 编程教程 > 正文

通过STM32 GPIO口加上延时函数实现跑马灯的教程

来源:未知 编辑:天选资讯 时间:2023-07-31

  f103c8t6为例,并且我们以最小系统板的电路为例。以下是2种类型的最小系统板,区别在于一个是4

  为了方便,我们使用板子上的LED为实验对象。我们先来看板子上LED的电路,由于手头上刚好有20pin烧写的板,我就以这个为例吧。

  学过电路的都会知道,LED灯亮的条件是什么,即只要我们在LED的两端施加一个电压差,使得LED两端有了电压差他就能亮。(记得区分正负哈)

  由电路图上,我们可以知道LED的正极已经接上了3.3V,负极接上了stm32的PC13的IO口上。由以上原理可得,只要我们将PC13输出一个低电平,LED两端就会有了电压差,即LED就亮了。

  而要制作跑马灯,便是要让灯闪烁起来,一亮一灭。由亮灯的原理可得我们只要在PC13输出一个高电平那么LED便不会亮了。

  然后在每一次的亮和灭之间我们加上一个固定时间的延时,就能实现出点灯的效果啦

  原理以及现象讲述完毕,接下来我们进入编程阶段。首先我们先来了解stm32 IO口的编程的流程:

  天选

  使能时钟: 时钟就对于stm32就像心脏对于人类,所以编程的第一步自然是赋予stm32一颗跳动“心脏”;

  IO口初始化: stm32的IO有多个输入和输出的模式,有不同的速度,以及多个IO口所以这一步我们要对这些进行初始化;

  在这个工程中我们使用的PC13是挂载在APB2上的,我们要使能的时钟便是对应的APB2;我们先来看看RCC函数库中有什么函数

  这个函数有两个入口的参数:RCC_APB2Periph、天选团队NewState;我们来看看这两个参数是什么

  从图八可以看到的是,第一个参数的值是在图上定义的那些,我们从中找到GPIOC,将RCC_APB2Periph_GPIOC复制下来作为要设置的参数;从图九可以看到的是,第二个的参数只有两个情况,一个是失能DISABLE,一个是使能ENABLE,这里我们要的是使能ENABLE;

  这个结构体包含了3个成员变量,GPIO_Pin、GPIO_Speed、GPIO_Mode对应我们要设置的GPIO引脚、速度、模式,其中各个的取值范围为:

  这两个的函数的参数都是一样的,我们在上边已经说过了,就不再复述了,我们这里要使用的是GPIOC以及GPIO_PIN_13;

  以上一篇新建的工程为模版(任意门:STM32新建工程(固件库版))我们在那个工程的基础上进行实操;

  首先我们打开那个TEST文件,在HARDWARE文件夹中建立一个文件夹命名为LED。进入USER文件夹,打开 TEST.uvprojx(关注后缀名,工程名称是自己命名的)的工程文件进入KEIL5;我们先编译一遍(这里的图忘了截,就放上一次的图吧)

  然后我们新建两个文件,保存在刚刚新建的LED文件夹内,并分别命名为 LED.c以及LED.h,对应的是LED的函数和头文件,并且分别添加到HARDWARE分组,以及头文件中,操作跟新建工程时新建main函数文件和导入头文件是一样的,更加具体操作在新建工程篇已经讲过了,就不复述了,完成后如图

  这里我们LED初始化函数中多了一个将PC13设为高电平的操作,是为了让程序烧写进去后,LED的第一状态是灭的,以便后续的操作;以及导入了库函数的头文件和LED的头文件

  在主函数我们要引入3个头文件,固件库的头文件以及自己编写的LED.h和延时函数的头文件,之后我们才能调用需要的函数。我们在初始化之后用一个死循环将GPIO的电平设置不断的循环,通过延时函数将亮和灭之间有一个固定时间差,实现呼吸灯的效果。通过编译之后,烧写进stm32,就可以看如图的呼吸灯的效果了。

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

织梦模板大全 dedecms.codesdq 联系QQ:121673232 邮箱:121673232@qq.com

Copyright © 2002-2011 DEDECMS. 织梦科技 版权所有 Power by DedeCms

Top