实现c语言控制蜂鸣器和风扇,5s风扇转 5s蜂鸣器响
main.c
#include "fan.h"
int main()
{
all_init();
while(1)
{
all_flash();
}
return 0;
}
fun.c
#include"fan.h"
//延时函数
void delay_ms(int ms)
{
int i,j;
for(i = 0; i < ms;i++)
for (j = 0; j < 1800; j++);
}
//led灯设置初始化
void all_init()
{
RCC |= (0x32);
//蜂鸣器
GPIOB->moder &= (~(0X3<<12));
GPIOB->moder |= (0X1<<12);
GPIOB->otyper &=(~(0X1<<6));
GPIOB->ospeedr &= (~(0X3<<12));
GPIOB->pupdr &= (~(0X3<<12));
//风扇
GPIOE->moder &= (~(0X3<<18));
GPIOE->moder |= (0X1<<18);
GPIOE->otyper &=(~(0X1<<9));
GPIOE->ospeedr &= (~(0X3<<18));
GPIOE->pupdr &= (~(0X3<<18));
//震动马达
GPIOF->moder &= (~(0X3<<12));
GPIOF->moder |= (0X1<<12);
GPIOF->otyper &=(~(0X1<<6));
GPIOF->ospeedr &= (~(0X3<<12));
GPIOF->pupdr &= (~(0X3<<12));
}
void all_flash()
{
//蜂鸣器响
GPIOB->odr |=(0X1<<6);
GPIOE->odr &= (~(0X1<<9));
GPIOF->odr &= (~(0X1<<6));
delay_ms(1000);
//风扇转
GPIOB->odr &=(~(0X1<<6));
GPIOE->odr |=(0X1<<9);
GPIOF->odr &= (~(0X1<<6));
delay_ms(10000);
//震动马达
GPIOB->odr &=(~(0X1<<6));
GPIOE->odr &= (~(0X1<<9));
GPIOF->odr |= (0X1<<6);
delay_ms(3000);
}
fun.h
#ifndef __FAN_H__
#define __FAN_H__
//定义寄存器组织结构体
typedef struct{
unsigned int moder;
unsigned int otyper;
unsigned int ospeedr;
unsigned int pupdr;
unsigned int idr;
unsigned int odr;
}gpio_t;
//定义GPIOB GPIOE和GPIOF
#define GPIOB ((gpio_t *)0X50003000)
#define GPIOE ((gpio_t *)0X50006000)
#define GPIOF ((gpio_t *)0X50007000)
#define RCC (*(volatile unsigned int *)0X50000A28)
void delay_ms(int ms);
void all_init();
void all_flash();
#endif