利用结构体数组方便地控制单片机IO

定义结构体

typedef struct 
{ 
  GPIO_TypeDef *GPIOx;
  u8     Pinx;
} relay_io;

初始化定义结构体数组

relay_io relay_map[10]=
{
  {GPIOA,GPIO_Pin_1}, {GPIOA,GPIO_Pin_1}, {GPIOA,GPIO_Pin_1}, {GPIOA,GPIO_Pin_1}, {GPIOA,GPIO_Pin_1},
  {GPIOA,GPIO_Pin_1}, {GPIOA,GPIO_Pin_1}, {GPIOA,GPIO_Pin_1}, {GPIOA,GPIO_Pin_1}, {GPIOA,GPIO_Pin_1}
};

调用结构体数组

void relay_set( u8 relay_ch,u8 sta )
{
  if( (relay_ch>0)&&(relay_ch<11) )//1-10
  {
   relay_set_one( relay_ch,sta );
  }
  else if( 0xAA==relay_ch )
  {
    for( relay_ch=1;relay_ch<11;relay_ch++ )
    {
      relay_set_one( relay_ch,sta );
      delay_ms(100);
    }
    relay_ch=0xAA;
  }
}

void relay_set_one( u8 relay_ch,u8 sta )
{
  if( sta ) 
  { 
   GPIO_SetBits( relay_map[ relay_ch-1 ].GPIOx,relay_map[ relay_ch-1 ].Pinx ); 
  }
  else if( !sta ) 
  { 
   GPIO_ResetBits( relay_map[ relay_ch-1 ].GPIOx,relay_map[ relay_ch-1 ].Pinx );
  }
}

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页