STM32 驱动

led 驱动

led头文件

#ifndef _LED_H
#define _LED_H

void LED_Init(void);
void LED_ON(void);
void LED_OFF(void);
void LED_Turn(void);

#endif

led代码

#include "stm32f10x.h" 

void   LED_Init(void)
{
    //START CLOCK
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1 ;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

    GPIO_Init(GPIOA,&GPIO_InitStructure);

    GPIO_SetBits(GPIOA,GPIO_Pin_1 );
}
void LED_ON(void){
    GPIO_ResetBits(GPIOA,GPIO_Pin_1);
}
void LED_OFF(void){
    GPIO_SetBits(GPIOA,GPIO_Pin_1);
}
void LED_Turn(void)
{
    if (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==0)
    {
        GPIO_SetBits(GPIOA,GPIO_Pin_1);//关灯
    }else{
        GPIO_ResetBits(GPIOA,GPIO_Pin_1);//开灯
    }
    
}

delay 延迟

delay头文件

#ifndef __DELAY_H
#define __DELAY_H

void Delay_us(uint32_t us);
void Delay_ms(uint32_t ms);
void Delay_s(uint32_t s);

#endif

delay代码

#include "stm32f10x.h"

/**
  * @brief  微秒级延时
  * @param  xus 延时时长,范围:0~233015
  * @retval 无
  */
void Delay_us(uint32_t xus)
{
	SysTick->LOAD = 72 * xus;				//设置定时器重装值
	SysTick->VAL = 0x00;					//清空当前计数值
	SysTick->CTRL = 0x00000005;				//设置时钟源为HCLK,启动定时器
	while(!(SysTick->CTRL & 0x00010000));	//等待计数到0
	SysTick->CTRL = 0x00000004;				//关闭定时器
}

/**
  * @brief  毫秒级延时
  * @param  xms 延时时长,范围:0~4294967295
  * @retval 无
  */
void Delay_ms(uint32_t xms)
{
	while(xms--)
	{
		Delay_us(1000);
	}
}
 
/**
  * @brief  秒级延时
  * @param  xs 延时时长,范围:0~4294967295
  * @retval 无
  */
void Delay_s(uint32_t xs)
{
	while(xs--)
	{
		Delay_ms(1000);
	}
} 

光敏传感器

头文件

#ifndef _LightSensor_H
#define _LightSensor_H

void LightSensor_Init(void);
uint8_t LightSensor_Get(void);
#endif

c文件

#include "stm32f10x.h" 

void LightSensor_Init(void)
{
     //START CLOCK
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13 ;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

    GPIO_Init(GPIOB,&GPIO_InitStructure);
}

uint8_t LightSensor_Get(void)
{
    return GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13);
}

你可能感兴趣的:(嵌入式,stm32,单片机,嵌入式硬件)