mai.c

#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "led.h"extern unsigned char flag_1ms;u8  sysstat=0;int main (void)
{SysTick_Config(72000000/1000);  //定时1毫秒Led_Init();   //led gpio初始化while(1){if(flag_1ms==1)  //1毫秒进来一次{flag_1ms=0;Led_Poll();  //LED循环显示}}
}

led.h

#ifndef __LED_H
#define __LED_H  #include "stm32f10x.h"/* 定义LED连接的GPIO端口, 用户只需要修改下面的代码即可改变控制的LED引脚 */
// R-红色
#define LED1_GPIOB      GPIOB                         /* GPIO端口 */
#define LED1_GPIO_CLK       RCC_APB2Periph_GPIOB        /* GPIO端口时钟 */
#define LED1_GPIO_PIN       GPIO_Pin_5                  /* 连接到SCL时钟线的GPIO */// G-绿色
#define LED2_GPIOB      GPIOB                         /* GPIO端口 */
#define LED2_GPIO_CLK       RCC_APB2Periph_GPIOB        /* GPIO端口时钟 */
#define LED2_GPIO_PIN       GPIO_Pin_0                  /* 连接到SCL时钟线的GPIO */// B-蓝色
#define LED3_GPIOB      GPIOB                         /* GPIO端口 */
#define LED3_GPIO_CLK       RCC_APB2Periph_GPIOB        /* GPIO端口时钟 */
#define LED3_GPIO_PIN       GPIO_Pin_1                  /* 连接到SCL时钟线的GPIO *///方法1:
#define LED1_ON  GPIO_WriteBit(GPIOB,GPIO_Pin_0,Bit_RESET)   //点亮LED1
#define LED1_OFF GPIO_WriteBit(GPIOB,GPIO_Pin_0,Bit_SET)     //熄灭LED1
#define LED2_ON  GPIO_WriteBit(GPIOB,GPIO_Pin_1,Bit_RESET)   //点亮LED2
#define LED2_OFF GPIO_WriteBit(GPIOB,GPIO_Pin_1,Bit_SET)     //熄灭LED2
#define LED3_ON  GPIO_WriteBit(GPIOB,GPIO_Pin_5,Bit_RESET)   //点亮LED2
#define LED3_OFF GPIO_WriteBit(GPIOB,GPIO_Pin_5,Bit_SET)     //熄灭LED2//方法2:
//#define LED1_ON  GPIO_WriteBit(GPIOB,GPIO_Pin_0,(BitAction)(0));   //点亮LED1
//#define LED1_OFF GPIO_WriteBit(GPIOB,GPIO_Pin_0,(BitAction)(1));    //熄灭LED1
//#define LED2_ON  GPIO_WriteBit(GPIOB,GPIO_Pin_1,(BitAction)(0));  //点亮LED2
//#define LED2_OFF GPIO_WriteBit(GPIOB,GPIO_Pin_1,(BitAction)(1));   //熄灭LED2
//#define LED3_ON  GPIO_WriteBit(GPIOB,GPIO_Pin_5,(BitAction)(0));   //点亮LED2
//#define LED3_OFF GPIO_WriteBit(GPIOB,GPIO_Pin_5,(BitAction)(1));     //熄灭LED2 //方法3:
//#define LED1_OFF  GPIO_SetBits(GPIOB,GPIO_Pin_0);    //  LED灯都为高电平
//#define LED1_ON GPIO_ResetBits(GPIOB,GPIO_Pin_0);    //  LED灯都为低电平
//#define LED2_OFF  GPIO_SetBits(GPIOB,GPIO_Pin_1);    //  LED灯都为高电平
//#define LED2_ON   GPIO_ResetBits(GPIOB,GPIO_Pin_1);  //  LED灯都为低电平
//#define LED3_OFF GPIO_SetBits(GPIOB,GPIO_Pin_5);     //  LED灯都为高电平
//#define LED3_ON  GPIO_ResetBits(GPIOB,GPIO_Pin_5);   //  LED灯都为低电平void Led_Init(void);   //led gpio初始化void    Led_OFF(void);  // LED3全灭
void    Led_Poll(void); //LED循环显示#endif /* __LED_H */

led.c

#include "led.h"typedef    struct  //led变量成员
{u8 timer;u16 num;}led_ctr_type;led_ctr_type led_ctr = {0,0};  //变量初始化void Led_Init(void)
{       /*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启LED相关的GPIO外设时钟*/RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);/*选择要控制的GPIO引脚*/GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN|LED2_GPIO_PIN|LED3_GPIO_PIN;   /*设置引脚模式为通用推挽输出*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   /*设置引脚速率为50MHz */   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*调用库函数,初始化GPIO*/GPIO_Init(GPIOB, &GPIO_InitStructure);
}void   Led_OFF(void)  // LED3全灭
{LED1_OFF; LED2_OFF;LED3_OFF;}void  Led_Poll(void)  // LED循环显示
{switch(led_ctr.timer)   //index每500毫秒加一次,隔执行500毫秒case(X) 跳转一次{case 0:LED1_ON;  break;  // LED1亮case 1:Led_OFF(); break;   // LED全灭case 2:LED2_ON;break;     //LED2亮case 3:Led_OFF(); break;   // LED全灭case 4:LED3_ON;break;     //LED3亮case 5:Led_OFF(); break;   // LED全灭}led_ctr.num++;if(led_ctr.num>=500)   //定时500毫秒{led_ctr.num=0;       led_ctr.timer++;   //index每500毫秒加一次if(led_ctr.timer>5){led_ctr.timer=0;}   //timer设置小于5,因为case只写到5}}

stm32控制led灯相关推荐

  1. HC-05蓝牙模块与STM32控制led灯亮详解

    HC-05蓝牙模块与STM32控制led灯亮 一.HC-05蓝牙模块解析 1.简介 2.HC-05原理 3.HC-05实物图 二.使用AT指令进行配置 1.进入命令响应工作模式 2.配置串口 3.进行 ...

  2. STM32 控制LED灯

    STM32 控制LED灯 一.简述        记--直接通过设置寄存器来控制LED灯.通过使用STM库函数来控制LED灯实现流水灯.        例子1:链接: https://pan.baid ...

  3. STM32控制LED灯闪烁(NB-IoT专栏—基础篇4)

    目录 1.实验目的 2.实验设计 3.实验步骤 3.1.使用 STM32CubeMX 新建项目工程 3.2.工程介绍

  4. 利用Proteus仿真STM32实现按键控制LED灯设计

    1. 前言 Proteus是英国著名的EDA工具(仿真软件),从原理图布图.代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计.是世界上唯一将电路仿真软件.PC ...

  5. STM32之中断控制LED灯

    STM32中断控制LED灯 一.中断 1. 中断地址 2. 中断优先级 3. 中断响应过程 二.新建工程 三.编写代码 四.运行结果 五.总结 参考 一.中断 在处理器中,中断是一个过程,即CPU在正 ...

  6. STM32中断控制LED灯亮灭

    目录 一.中断介绍 1.中断分类 硬件中断(Hardware Interrupt) 软件中断(Software Interrupt) 2.中断优先级 3.中断源种类 4.中断响应原则 二.新建项目 1 ...

  7. STM32定时器控制LED灯闪烁及PWM练习

    一.STM32定时器控制LED灯闪烁 1.相关配置 1)配置RCC和SYS 2)配置IO 配置PC15,并命名为D1. 3)配置定时器 选定时器2,配置Clock Source为Internal Cl ...

  8. STM32学习笔记——EXTI外部中断,光敏传感器控制LED灯

    中断系统 中断:在主程序运行过程中,当出现了特定的中断触发条件,CPU就可以暂停当前正在运行的程序去处理中断程序,并把当前程序的地址压入堆栈,中断程序处理完成后把地址弹出堆栈,回到刚刚暂停的位置继续执 ...

  9. STM32使用延时控制LED灯亮暗变换,LED呼吸灯效果

    STM32F407ZE 使用延时控制LED灯亮暗变换,实现LED呼吸灯效果 具体代码如下: main.c部分 #include <stm32f4xx.h> #include "s ...

最新文章

  1. 安装 Thonny 软件环境开发PI Pico
  2. 魅族适配鸿蒙吗,魅族智能生活发布会新增看点:接入鸿蒙操作系统
  3. Kotlin 一个好用的新功能:Parcelize
  4. ios hitTest及扩展---分解ZFPlayer
  5. Windows Forms DataGridView 中合并单元格
  6. Android基础总结(八)Service
  7. 那些公司用计算机仪表电缆,计算机及仪表用电缆技术
  8. 放之四海皆适用的设计原则(二)
  9. mplayer命令行模式下的使用方法
  10. 排名:开源免费的小程序商城源码-LaiKe
  11. java中double类型占几个字节_Java中的单双精度数据类型分别占几个字节?
  12. 日本盗版漫画网站的罪与罚
  13. 个人通过ipv6地址提供公网访问服务
  14. C语言 修改JPEG图片属性
  15. 黄一老师讲述贷款“黑名单”小心别上了黑名单!
  16. PyTorch 实战之水果分类器
  17. egg.js中Class constructor BaseContextClass cannot be invoked without ‘new‘解决方法
  18. 阿里云不同账号新旧服务器镜像迁移数据迁移同步
  19. Charles--使用Charles抓Https包
  20. 条件极值(拉格朗日乘数法)_Simplelife_新浪博客

热门文章

  1. W-C258 学习打卡(7.19)
  2. 独家 | 微软三位AI大牛出走:何晓冬加盟京东 沈徽加入商汤科技
  3. java 字节对齐_字节对齐
  4. 沁恒CH582M开发板-2-按键扫描(按键控制LED亮灭)
  5. java实现手机掩码_如何将手机号码中间做掩码,四个常用文本操作技巧
  6. Linux内核--五大子系统
  7. Office 2016专业增强版报错1935“安装失败,正在回滚更改”解决方案
  8. 微信PC端 微信浏览器打开控制台
  9. Java 深入理解深拷贝和浅拷贝区别
  10. C++ switch用法(break的问题)