STM32控制LED灯

本文详述了使用STM32F103C8开发板,通过Keil5进行固件开发,控制LED灯的操作,包括库函数、自定义端口、延时和按键控制的方法。讲解了GPIO_SetBits、GPIO_ResetBits等函数以及延时函数的实现,还介绍了LED呼吸灯的占空比控制和按键去抖动技术。
摘要由CSDN通过智能技术生成

  本文练习硬件使用STM32F103C8芯片开发板,软件使用Keil5-5.23版本安装对应Keil4兼容包,使用Keil4标准库函数开发,练习目的为掌握STM32单片机操作方法,最终独立完成相关项目,为巩固学习并分享学习经验现分享如下:

LED相关操作

1.1 相关函数定义

  1. 相关函数定义
    1. LED.h
      #ifndef __LED_H
      #define __LED_H	 
      #include "sys.h"
      
      //#define LED1 PBout(0)// PB0
      //#define LED2 PBout(1)// PB1	
      #define LEDPORT	GPIOB	//定义IO接口
      #define LED1	GPIO_Pin_0	//定义IO接口
      #define LED2	GPIO_Pin_1	//定义IO接口
      
      void LED_Init(void);//初始化
                                  
      #endif
      
    2. LED.C
      #include "led.h"
      
      void LED_Init(void){
              //LED灯的接口初始化
      GPIO_InitTypeDef  GPIO_InitStructure; 	
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);       
      GPIO_InitStructure.GPIO_Pin = LED1|LED2; //选择端口号(0~15或all)                        
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式       
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)    
      GPIO_Init(LEDPORT, &GPIO_InitStructure);			
      }
      
    3. delay.h
      #ifndef __DELAY_H
      #define __DELAY_H 			   
      #include "sys.h"
      
      void delay_s(u16 s);
      void delay_ms(u16 ms);
      void delay_us(u32 us);
      
      #endif
      
    4. delay.c
      #include "delay.h"
      #define AHB_INPUT  72  //请按RCC中设置的AHB时钟频率填写到这里(单位MHz)
      
      void delay_us(u32 uS){
              //uS微秒级延时程序(参考值即是延时数,72MHz时最大值233015)	
          SysTick->LOAD=AHB_INPUT*uS;      //重装计数初值(当主频是72MHz,72次为1微秒)
          SysTick->VAL=0x00;        //清空定时器的计数器
          SysTick->CTRL=0x00000005;//时钟源HCLK,打开定时器
          while(!(SysTick->CTRL&0x00010000)); //等待计数到0
          SysTick->CTRL=0x00000004;//关闭定时器
      }
      
      void delay_ms(u16 ms){
              //mS毫秒级延时程序(参考值即是延时数,最大值65535)	 		  	  
          while( ms-- != 0){
             
              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值