智能车制作

标题: IAR中for循环定义变量的作用域 [打印本页]

作者: gufeng    时间: 2014-2-12 11:17
标题: IAR中for循环定义变量的作用域
IAR编程中在for循环定义的局部变量,例如for(uint i=0,i<8;i++),i的作用域只是for循环!?
uint8 LPLD_GPIO_Init(GPIO_InitTypeDef gpio_init_structure)
{
  uint8 i;
  PORT_Type *portx;
  uint32 pcr = PORT_PCR_MUX(1)| gpio_init_structure.GPIO_PinControl;
  GPIO_Type *ptx = gpio_init_structure.GPIO_PTx;
  uint32 pins = gpio_init_structure.GPIO_Pins;
  uint8 dir = gpio_init_structure.GPIO_Dir;
  uint8 output = gpio_init_structure.GPIO_Output;
  GPIO_ISR_CALLBACK isr_func = gpio_init_structure.GPIO_Isr;
  
  //参数检查
  ASSERT( ptx <= PTE);                  //判断端口
  ASSERT( dir <= 1 );                   //判断方向
  ASSERT( output <= 1 );                //判断输出电平状态
  
  if(ptx == PTA)
  {
    portx = PORTA;  
    i = 0;
  }
  else if(ptx == PTB)
  {
    portx = PORTB;
    i = 1;
  }
  else if(ptx == PTC)
  {
    portx = PORTC;
    i = 2;
  }
  else if(ptx == PTD)
  {
    portx = PORTD;
    i = 3;
  }
  else if(ptx == PTE)
  {
    portx = PORTE;
    i = 4;
  }
  else
    return 0;
  
  //输入或输出设置
  if(dir==DIR_OUTPUT)
  {
    ptx->PDDR |= pins;
    //设置初始输出
    if(output==OUTPUT_H)
    {
      ptx->PSOR = pins;
    }
    else
    {
      ptx->PCOR = pins;
    }
  }
  else
  {
    ptx->PDDR &= ~(pins);
  }
  
  //配置所选引脚的控制寄存器
  for(uint8 i=0; i<32; i++)
  {
    if(pins&(1ul<<i))//选择引脚号
    {
      portx->PCR[i] = pcr;//
    }
  }

  if(isr_func!=NULL)
    GPIO_ISR[i] = isr_func;//
  
  return 1;
}

GPIO的初始化中已经定义了uint i;然后在for循环中又定义了uint i



作者: huang91    时间: 2014-2-12 11:29
是的
作者: liningbo888    时间: 2014-2-12 12:01
局部变量




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2