作业:封装一个函数,实现指定颜色的灯,指定灯的状态(运用枚举)
.c 部分
void LED_CONFIN(int colour)
{
GPIO_InitTypeDef GOIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
switch(colour)
{
case 4:GOIO_InitStruct.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6;
GOIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GOIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOC,&GOIO_InitStruct);break;
case 1:
GOIO_InitStruct.GPIO_Pin = GPIO_Pin_8;
GOIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GOIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOC,&GOIO_InitStruct);break;
case 2:
GOIO_InitStruct.GPIO_Pin = GPIO_Pin_7;
GOIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GOIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOC,&GOIO_InitStruct);break;
case 3:
GOIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
GOIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GOIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOC,&GOIO_InitStruct);break;
}
}
void LED_STATE(int colour,int state)
{
if(state==0)
switch(colour)
{
case 1:GPIO_ResetBits(GPIOC, GPIO_Pin_8);break;
case 2:GPIO_ResetBits(GPIOC, GPIO_Pin_7);break;
case 3:GPIO_ResetBits(GPIOC, GPIO_Pin_6);break;
case 4:GPIO_ResetBits(GPIOC, GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6);break;
}
else
switch(colour)
{
case 1:GPIO_SetBits(GPIOC, GPIO_Pin_8);break;
case 2:GPIO_SetBits(GPIOC, GPIO_Pin_7);break;
case 3:GPIO_SetBits(GPIOC, GPIO_Pin_6);break;
case 4:GPIO_SetBits(GPIOC, GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6);break;
}
}
void LED_CTRL(int colour,int state)
{
LED_CONFIN(colour);
while(1)
{
LED_STATE(colour,state);
}
}
.h 部分
#ifndef __LED_H__
#define __LED_H__
#include "stm32f10x.h"
enum{
LEDR=1,
LEDG,
LEDB,
LEDW
};
enum{
OPEN,
CLOSE
};
void LED_CONFIN(int colour);
void LED_STATE(int colour,int state);
void LED_CTRL(int colour,int state);
#endif