这个LED的小程序基于的是德飞莱的最小系统板 我当时写这个程序的时候想的就是这个程序能够便于理解 也便于移植 便于调用 我参加过电赛 对于STM32的一个管脚修改的麻烦是深有体会 一个地方不对就没法工作 所以这次我写这个库的时候 我也特别注意了这些方面 一个小LED 挺简单的 有时候用来做调试用的话 我觉得还是挺好的 下面我将自己的源码分享  个人能力有限 大神不要笑哈!!!

在这个源码里面 你仅仅只需要修改

的内容 就可以快速的对STM32的任意一个管脚实行 高低电平控制的

注意就是里面有个delay的操作 这个事先要在主函数里面进行初始化的(如果不初始化会死在循环里面) 这个delay的源码是借用原子大哥的

  1. #ifndef __LED_H
  2. #define __LED_H
  3.  
  4. #include<sys.h>
  5.  
  6. #define LED2_ON 1
  7. #define LED2_OFF 2
  8.  
  9. #define LED3_ON 3
  10. #define LED3_OFF 4
  11.  
  12. #define LED2_REV 5 //管脚取反
  13. #define LED3_REV 6 //管脚取反
  14.  
  15. #define LED2_CLK RCC_APB2Periph_GPIOE
  16. #define LED2_PORT GPIOE
  17. #define LED2_PIN GPIO_Pin_5
  18.  
  19. #define LED3_CLK RCC_APB2Periph_GPIOB
  20. #define LED3_PORT GPIOB
  21. #define LED3_PIN GPIO_Pin_5
  22.  
  23. #define LED2 PEout(5) // PF6
  24. #define LED3 PBout(5) // PF7
  25.  
  26. void LED_Init(void);
  27. void LED2_Init(void);
  28. void LED3_Init(void);
  29.  
  30. void DEBUG_LED(u8 x);
  31.  
  32. #endif
  1. /******************************************************************************
  2. * 文件 LED.c
  3. * 作者 Belye
  4. * 版本 ST V3.5.0
  5. * 日期 03-February-2016
  6. * 提要 基于德飞莱开发板的LED的底层驱动程序
  7. * 使用方式 函数调用示例
  8. * 注意 记得修改对应的LED初始化管脚
  9. ******************************************************************************/
  10. //V1.0 修改说明
  11. //调整代码 加入取反
  12.  
  13. /*************************************** 函数调用示例 ************************************
  14. LED2_Init();//记得修改此函数里面的内容
  15. DEBUG_LED(LED2_ON);
  16. **********************************************************************************************/
  17.  
  18. #include<LED.h>
  19. #include<delay.h>
  20.  
  21. void LED_Init()
  22. {
  23. LED2_Init();
  24. LED3_Init();
  25. }
  26. void LED2_OPEN()
  27. {
  28. LED2=;
  29. }
  30.  
  31. void LED2_CLOSE()
  32. {
  33. LED2=;
  34. }
  35.  
  36. void LED2REV()
  37. {
  38. GPIO_WriteBit(LED2_PORT, LED2_PIN,(BitAction)(-(GPIO_ReadOutputDataBit(LED2_PORT, LED2_PIN))));
  39.  
  40. }
  41.  
  42. void LED3_OPEN()
  43. {
  44. LED3=;
  45. }
  46.  
  47. void LED3_CLOSE()
  48. {
  49. LED3=;
  50. }
  51.  
  52. void LED3REV()
  53. {
  54. GPIO_WriteBit(LED3_PORT, LED3_PIN,(BitAction)(-(GPIO_ReadOutputDataBit(LED3_PORT, LED3_PIN))));
  55. }
  56.  
  57. void DEBUG_LED(u8 x)
  58. {
  59. switch (x)
  60. {
  61. case :
  62. LED2_OPEN();
  63. break;
  64. case :
  65. LED2_CLOSE();
  66. break;
  67. case :
  68. LED3_OPEN();
  69. break;
  70. case :
  71. LED3_CLOSE();
  72. break;
  73. case :
  74. LED2REV();
  75. break;
  76. case :
  77. LED3REV();
  78. break;
  79. default:
  80. break;
  81. }
  82. }
  83.  
  84. void LED2_Init(void)
  85. {
  86.  
  87. GPIO_InitTypeDef GPIO_InitStructure;
  88.  
  89. RCC_APB2PeriphClockCmd(LED2_CLK, ENABLE);
  90.  
  91. GPIO_InitStructure.GPIO_Pin = LED2_PIN;
  92. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  93. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  94. GPIO_Init(LED2_PORT, &GPIO_InitStructure);
  95. GPIO_SetBits(LED2_PORT,LED2_PIN);
  96.  
  97. }
  98.  
  99. void LED3_Init(void)
  100. {
  101.  
  102. GPIO_InitTypeDef GPIO_InitStructure;
  103.  
  104. RCC_APB2PeriphClockCmd(LED3_CLK, ENABLE);
  105.  
  106. GPIO_InitStructure.GPIO_Pin = LED3_PIN;
  107. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  108. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  109. GPIO_Init(LED3_PORT, &GPIO_InitStructure);
  110. GPIO_SetBits(LED3_PORT,LED3_PIN);
  111.  
  112. }

STM32的LED驱动程序的更多相关文章

  1. 11.ok6410之led驱动程序编写

    led驱动程序编写 本文主要包含三部分,led驱动程序led.c编写,编译驱动程序的makefile的编写,以及使用驱动程序的应用程序led_app的编写 一.led.c编写 #include < ...

  2. BeagleBone Black Linux驱动程序开发入门(1): LED驱动程序

    这篇文章展示如何在BBB平台上编写LED驱动程序,本文的程序是根据国嵌S3C2440的LED驱动的例子并结合内核中OMAP系列的gpio操作来改的.本文中的程序包括驱动程序模块和用户空间程序.废话不多 ...

  3. 【Linux驱动】TQ2440 LED驱动程序

    ★整体介绍 LED驱动程序主要实现了TQ2440开发板上的4个LED灯的硬件驱动,实现了对引脚GPIOB5.GPIOB6.GPIOB7.GPIOB8的高低电平设置(common-smdk.c中已经实现 ...

  4. LED驱动程序分析

    混杂设备 LED驱动程序分析 /******************************* * *杂项设备驱动:miscdevice *majior=10; * * *************** ...

  5. 使用设备树来编写led驱动程序

    在总线设备驱动模型中,平台设备是写在c文件中.使用设备树时,平台设备事先并不存在,在dts文件中构造节点,节点里面含有资源.dts文件被编译成dtb文件,然后传递给内核.内核会解析dtb文件,得到一个 ...

  6. 基于设备树的led驱动程序

    #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include ...

  7. Linux下的led驱动程序,ok6410

    本程序採用动态映射的方法控制led.硬件平台为飞凌的ok6410 led.h:定义控制命令 #ifndef _LED_H #define _LED_H #define LED_MAGIC 'M' #d ...

  8. stm32配置led

    前言:我们学习一门新语言的时候都是先从hello world入门,stm32也有自己的入门方式,那就是流水灯的配置. 在配置之前我们需要先配置好编译环境,我们需要手动修改头文件中的一些内容. 1.首先 ...

  9. 小结-stm32 驱动LED灯

    使用位带操作,位带操作就是把每个比特膨胀成一个32位的字,当访问这些字的时候就访问这些比特位. http://www.cnblogs.com/xiaobo-Linux/ 然后,端口使能: //³õʼ ...

随机推荐

  1. JQuery中根据表单元素动态拼接json 字符串

    // <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  2. 分布式事务 & 两阶段提交 & 三阶段提交

    可以参考这篇文章: http://blog.csdn.net/whycold/article/details/47702133 两阶段提交保证了分布式事务的原子性,这些子事务要么都做,要么都不做. 而 ...

  3. MVC笔记2:mvc+jquery.validate.js 进行前端验证

    1.引用如下js和css 代码 <link href="@Url.Content("~/Content/Site.css")" rel="sty ...

  4. 【Xilinx-LVDS读写功能实现】-00-开始

    最近用到了一款LVDS接口的摄像头,640*480灰度图像,数据速率为600Mbps,位宽10bit,DDR双边沿采样. 实现数据的采集需要用到FPGA内的SERDES模块,现在已经仿真通过了,等到上 ...

  5. NPM 简单实用说明

    https://nodejs.org/en/download/ 下载并按照,直接下一步就可以,最后会在C:\Program Files 新建一个nodejs文件夹,里面有一个node.exe.双击就启 ...

  6. 负载均衡探测器lbd

    负载均衡探测器lbd   大型网站为了解决海量访问问题,往往采用负载均衡技术,将用户的访问分配到不同的服务器上.网站的负载均衡可以从DNS和HTTP两个环节进行实施.在进行Web渗透测试的时候,需要先 ...

  7. js模块化开发——require.js的用法

    这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战. 我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的 ...

  8. 负载均衡软件LVS分析一(概念)

    一. LVS简介LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver. ...

  9. css基础详解(1)

    css讲解 声明 1:这里的文字都是我从我自己csdn账号拷贝过来,是本人学习总结的结晶,所以请尊重本作品.2:如要要转载本文章,则要说明文字的出处.3:如有哪里不对或者哪里还不够完善欢迎大家指出. ...

  10. Bootstrap入门(七)组件1:字体图标

    Bootstrap入门(七)组件1:字体图标   包括200个来自 Glyphicon Halflings 的字体图标,允许 Bootstrap 免费使用. 部分可用图标截图: 所有图标都需要一个基类 ...