继电器

–Relay.h

#ifndef __Relay_h
#define __Relay_h

#define  BITBANDADDR(addr,n)   ((addr & 0xF0000000) + 0x2000000 + ((addr & 0xFFFFF) << 5) + (n << 2))
#define  MEMACCESS(addr)         (*((volatile unsigned long *)addr))
#define  BIT_ADDR(addr,n)      (MEMACCESS(BITBANDADDR(addr,n)))

#define  GPIOA_ODR_ADDR        (GPIOA_BASE + 0x0C)
#define  GPIOA_IDR_ADDR        (GPIOA_BASE + 0x08)

#define  PAout(n)               BIT_ADDR(GPIOA_ODR_ADDR,n)
#define  PAin(n)                BIT_ADDR(GPIOA_IDR_ADDR,n)

#define  Relay1         PAout(8)
#define  Relay2         PAout(9)


void Relay_Init(void);
void Relay_Star(void);
void Relay_delay(int ms);

#endif

–Relay.c

#include <stdio.h>
#include "stm32f10x.h"
#include "Relay.h"

static  int i = 0;
static  int j = 0;

void Relay_Init(void)
{
    RCC->APB2ENR |= 0x0004;  
    GPIOA->CRH = (GPIOA->CRH&0xFFFFFF00)|0x00000033;
    // PA8、PA9端口需要打开
}

void Relay_Star(void)
{
    Relay1 = 0;
    Relay_delay(500);
    Relay1 = 1;
    Relay_delay(500);
    Relay2 = 0;
    Relay_delay(500);
    Relay2 = 1;
    Relay_delay(500);
}

void Relay_delay(int ms)
{
    for( i = 0 ; i < 100 ; i++)
        for(j = 0 ; j < ms ; j++);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值