完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
首先,我们打开本讲的例程,在工程目录我们可以看到驱动分组下有 led、delay 两个.c源文件,其实,它们对应的还有两个头文件,它们就保存在我们的 DRIVER 文件夹下的 inc 文件夹中,同理,源文件就保存在 src 文件夹中。
我们在源文件里定义相关的函数,然后在对应的头文件里声明它,最后我们在想要调用此函数的源文件中包含该头文件即可,这就是模块化编程。这样做的好处就是代码整体框架结构清晰明了,便于我们进行后期维护与移植。 因此,这个知识点希望大家能够掌握。 下面我们就开始具体讲解如何驱动我们实验平台上的用户指示灯。首先,我们要明白,点灯它的本质是通过控制GPIO引脚这个基础外设输出高低电平,从而达到灯亮灭的效果,那么大家可能就要问了,之前说过,可以配置使用的通用 GPIO 引脚有37个,这么多GPIO口,我们该使用哪个呢? 通过观察下图,我们可以发现,用户灯的一端是与主控芯片的 PC13 这个引脚电气相连的,因此我们就是要配置这个管脚输出高低电平,那么究竟是那种电平会使灯变亮呢?这时就要看我们的驱动电路了,其实也很简单,用户灯其实就是个发光二极管 ,既然是二极管,那么它就具有单向导电性 ,它的正极 接了3.3V电压,我们需要点亮它就需要在负极输出低电平,也就是 PC13 这个引脚得输出低电平。 同理,灯灭就得输出高电平。 接下来,我们回到工程中通过实例来了解 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 仿真器与实验板的连接图。 最后,点击编译 ,无误后下载到我们的实验平台上,观察效果。更改延时值的大小就可以改变它的闪烁频率。 |
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9050 浏览 16 评论
4085 浏览 18 评论
1171浏览 3评论
602浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
594浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2332浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 20:48 , Processed in 1.016610 second(s), Total 49, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号