没基础学stm32(低学历如何学习STM32)

从“点灯”入门STM32

本篇文章我们通过一个简略的例子来熟悉模块化编程以及利用库函数的方法进行开发使用STM32外设的根本流程。

首先,我们翻开本讲的例程,在工程目录我们能够看到驱动分组下有 led、delay 两个.c源文件,其实,它们对应的还有两个头文件,它们就保存在我们的 DRIVER 文件夹下的 inc 文件夹中,同理,源文件就保存在 src 文件夹中。

我们在源文件里定义相关的函数,然后在对应的头文件里声明它,最后我们在想要调用此函数的源文件中包含该头文件即可,这就是模块化编程。这样做的益处就是代码整体框架构造清晰明了,便于我们进行后期维护与移植。

因此,这个知识点希望大家能够掌握。

下面我们就初始详细讲解如何驱动我们实验平台上的用户指示灯。首先,我们要明白,点灯它的本质是通过控制GPIO引脚这个根底外设输出高低电平,从而到达灯亮灭的效果,那么大家可能就要问了,之前说过,能够配置使用的通用 GPIO 引脚有37个,这么多GPIO口,我们该使用哪个呢?

通过观察下图,我们能够发现,用户灯的一端是与主控芯片的 PC13 这个引脚电气相连的,因此我们就是要配置这个管脚输出高低电平,那么究竟是那种电平会使灯变亮呢?这时就要看我们的驱动电路了,其实也很简略,用户灯其实就是个发光二极管 ,既然是二极管,那么它就具有单向导电性 ,它的正极 接了3.3V电压,我们须要点亮它就须要在负极输出低电平,也就是 PC13 这个引脚得输出低电平。

没基础学stm32(低学历如何学习STM32)(1)

同样,灯灭就得输出高电平。

接下来,我们回到工程中通过实例来了解 STM32根底外设使用的根本流程,首先我们用到了 GPIO 这个外设。因此,在工程中我们要添加 GPIO 这个外设的库函数,添加的方法这里再给大家演示一下。添加它是为了用于后面的初始化调用,接着新建两个文件,一个是用户灯源文件,一个是对应的头文件,分别命名为 led.c、led.h,保存在驱动文件夹下的src、inc 文件夹中,同时不要忘了将 led.c源文件添加到工程中来,接下来,就能够在 led.c中编写相关驱动函数了。

在今天的实验中,所需编写的函数比较简略,就一个初始化函数,首先,我们定义一个 函数名,这个不能和库函数的函数名一样,否则会报错,这里取这个名字就能够,接着看函数主体,首先得定义一个GPIO的构造体变量,用于初始化构造体成员,(这个能够直接在 GPIO_Init 库函数里复制),接着很重要的一点就是我们要开启 GPIOC 这个口的时钟,否则它是不会工作的,开启它的时钟,我们直接调用库函数里的 RCC_APB2PeriphClockCmd 这个函数即可,接下来就是初始化 GPIO 的成员变量了,引脚选择 GPIO_Pin_13 这个引脚,模式选择 推挽输出模式,速度选择 50MHz 就能够了,最后 完成 GPIO_Init函数的初始化就能够了。接下来,我们一上电为了不让灯亮,就调用了 GPIO_SetBits 这个函数就能够了。然后不要忘了在 led.h中声明这个函数。

为了使用户灯到达闪烁的效果,就须要加入延时,于是利用相同的方法新建delay.c、delay.h 两个文件,不要忘了也必需加入到工程中来,然后再delay.c中编写一个简略的计数延时函数就能够了,同理也须要将它声明在 delay.h中。

最后,在主函数中,我们先调用 LED的初始化函数,然后在 while(1) 死循环中调用 GPIO_ResetBits 这个函数点亮 led,在调用自己编写的延时函数,然后在调用输出高电平这个函数,在加延时,这样就实现了一个循环闪烁的 用户灯。

接下来,我们看一下 elink32 仿真器与实验板的连接图。

没基础学stm32(低学历如何学习STM32)(2)

最后,点击编译 ,无误后下载到我们的实验平台上,观察效果。更改延时值的大小就可以改变它的闪烁频率。

没基础学stm32(低学历如何学习STM32)(3)

想要学习单片机的朋友 ,关注我们,回复一哥,与导师一起学习成长,共同进步,还有更多资料领取。
说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页