找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9689|回复: 4
打印 上一主题 下一主题
收起左侧

STM32单片机LED闪烁试验 源码 原理图 教程等

[复制链接]
跳转到指定楼层
楼主
实验 1  LED 闪烁实验

STM32 最简单的外设莫过于 IO 口的高低电平控制了,本章将通过一个经典
的 LED 闪烁程序,带大家开启 STM32 之旅, 通过本章的学习, 你将了解到
STM32 的 IO 口作为输出使用的方法。在本章中我们将通过代码控制普中科技
STM32 开发板上的 8个 LED,实现闪烁灯的效果。 本章分为以下学习目标:
1、 了解 STM32用有几种 GPIO模式。
2、 怎么学会设置 STM32的GPIO输出控制 LED灯。

1.1  硬件设计
首先我们来看一下我们开发板上面 LED的接线图:



LED 灯接线图
从上面的图,我们可以看到 LED 灯是接到单片机的 PC 口的 PC0 到 PC7。而
点 亮一盏LED的原理就是把相应LED接到单片机的相应的IO口输出低电平,  IO
口 输出为高电平就能够熄灭 LED,所以要实现 LED闪烁也就是将单片机 PC管脚
每间隔一段时间不输出一个高低电平脉冲即可。
1.2: STM32 的IO 口简介
本章将要实现的是控制普中科技 STM32开发板上的8个 LED 实现LED灯闪
烁的效果,  该实验的关键在于如何控制 STM32 的 IO 口输出。了解了 STM32 的
IO 口如何输出的,就可以实现闪烁灯了。通过这一章的学习, 你将初步掌握
STM32 基本 IO 口的使用,而这是迈向 STM32 的第一步。这一章节因为是第一
个实验章节,所以我们在这一章将讲解一些知识为后面的实验做铺垫。在讲解
STM32 的 GPIO之前,首先打开我们光盘的第一个实验工程 LED 闪烁实验,可以
看到我们的实验工程目录:

接下来我们逐一讲解一下我们的工程目录下面的组以及重要文件。
① StdPeriph_Driver 下面存放的是 ST 官方提供的固件库函数,里面的函数我
们可以根据需要添加和删除,这里面的文件内容用户不需要修改。
② Startup 下面存放的是固件库必须的启动文件。这里面的文件用户不需要修
改。
③ cmsis 下面存放的是固件库必须的核心文件。这里面的文件用户不需要修改。  
④  APP 下面存放的是每个实验的外设驱动代码,他的实现是通过调用
StdPeriph_Driver 内 的 固 件 库 文 件 实 现 的 , 比 如   led.c  里 面 调 用
stm32f10x_gpio.c 里面的函数对 led 进行初始化,这里面的函数是讲解的重
点。 后面的实验中可以看到会引入多个源文件。
⑤  user 下面存放的主要是用户代码。 stm32f10x_it.c 里面存放的是中断服
务函数,public存放的是公用函数,Main.c 函数主要存放的是主函数了,这个
大家应该很清楚。
准备内容我们就讲解到这里,接下来我们就要进入我们 LED 闪烁实验的讲解
部分了。 这里需要说明一下,我们在讲解固件库之前会首先对重要寄存器进行
一个讲解,这样是为了大家对寄存器有个初步的了解。大家学习固件库,并不需
要记住每个寄存器的作用,而只是通过了解寄存器来对外设一些功能有个大致的
了解,这样对以后的学习也很有帮助。
    首先要提一下,在固件库中,GPIO 端口操作对应的库函数函数以及相关定
义在文件 stm32f10x_gpio.h 和 stm32f10x_gpio.c 中。STM32 的 IO 口相比
51 而言要复杂得多,所以使用起来也困难很多。 首先 STM32 的 IO 口可以由
软件配置成如下 8 种模式:



余下内容请下载附件

源码:
  1. *                             
  2. --------------------------------------------------------------------------------
  3. * 实 验 名         : LED灯闪烁实验
  4. * 实验说明       : 通过delay延时实现LED灯闪烁效果
  5. * 连接方式       :
  6. * 注    意         :     延时函数及显示函数在led.c文件内
  7. *******************************************************************************/

  8. #include "public.h"      //公共函数头文件
  9. /****************************************************************************
  10. * Function Name  : main
  11. * Description    : Main program.
  12. * Input          : None
  13. * Output         : None
  14. * Return         : None
  15. ****************************************************************************/
  16. int main()
  17. {   
  18.     LED_Init();        //LED端口及时钟初始化  
  19.     while(1)
  20.     {
  21.         led_display(); //led显示            
  22.     }   
  23. }
复制代码




余下内容请下载附件:
32单片机LED闪烁.zip (2.08 MB, 下载次数: 52)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:303034 发表于 2018-4-7 10:28 | 只看该作者
很好, 学习了
回复

使用道具 举报

板凳
ID:303034 发表于 2018-4-7 10:29 | 只看该作者
这个资料很好
回复

使用道具 举报

地板
ID:337931 发表于 2018-5-28 11:43 | 只看该作者
很好, 学习了
回复

使用道具 举报

5#
ID:382878 发表于 2018-8-5 10:55 | 只看该作者
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表