原创 STM32的TCP/IP网络采集器番外篇之水流LED

2008-8-10 22:01 4571 15 15 分类: MCU/ 嵌入式

要做好STM32的TCP/IP网络采集器就要在STM32上写出驱动ENC28J60的程序,51上实现是没问题了,但现在STM32不论是开发环境还是本身片子的使用都很不一样,所以要先熟悉STM32的开发环境和片子的使用。我觉得要熟悉一种MCU,从最简单的IO开始是最好的,学51也是从流水LED起步,现在也不例外。这次感受是,STM32比51复杂,从他的时钟设置,IO设置就能看出,使用前都要设置一翻,51就简单了,直接赋值给IO,下面是今天的成果,借鉴了例子!其中正向LED的速度要慢很多,想看看效果。


#include <stm32f10x_lib.h>


GPIO_InitTypeDef GPIO_InitStructure; //GPIO初始化结构体
void Delay(vu32 nCount);



int main(void)
{
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能GPIOC时钟
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
 //选择引脚4,5,6,7
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //带上拉输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出频率最大50M
 GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化PC4,5,6,7引脚


 while(1)
  {
                   //正向流水灯   
     GPIO_SetBits(GPIOC, GPIO_Pin_4);//点亮LED1
     Delay(0xaffff); //延时
     GPIO_ResetBits(GPIOC, GPIO_Pin_4);//关闭LED1
  
     GPIO_SetBits(GPIOC, GPIO_Pin_5);//点亮LED2
     Delay(0xaffff); //延时
     GPIO_ResetBits(GPIOC, GPIO_Pin_5);//关闭LED2
              
     GPIO_SetBits(GPIOC, GPIO_Pin_6);//点亮LED3
     Delay(0xaffff); //延时
     GPIO_ResetBits(GPIOC, GPIO_Pin_6);//关闭LED3


                   GPIO_SetBits(GPIOC, GPIO_Pin_7);//点亮LED4
                   Delay(0xaffff); //延时
     GPIO_ResetBits(GPIOC, GPIO_Pin_7);//关闭LED4
            
                   //逆向流水灯
                   GPIO_SetBits(GPIOC, GPIO_Pin_7);//点亮LED4
                   Delay(0x1ffff); //延时
     GPIO_ResetBits(GPIOC, GPIO_Pin_7);//关闭LED4
 
                   GPIO_SetBits(GPIOC, GPIO_Pin_6);//点亮LED3
     Delay(0x1ffff); //延时
     GPIO_ResetBits(GPIOC, GPIO_Pin_6);//关闭LED3
       
     GPIO_SetBits(GPIOC, GPIO_Pin_5);//点亮LED2
     Delay(0x1ffff); //延时
     GPIO_ResetBits(GPIOC, GPIO_Pin_5);//关闭LED2


                   GPIO_SetBits(GPIOC, GPIO_Pin_4);//点亮LED1
     Delay(0x1ffff); //延时
     GPIO_ResetBits(GPIOC, GPIO_Pin_4);//关闭LED1


                   //正向灯渐亮
                   GPIO_SetBits(GPIOC, GPIO_Pin_4);//点亮LED1
     Delay(0x1ffff); //延时
  
     GPIO_SetBits(GPIOC, GPIO_Pin_5);//点亮LED2
     Delay(0x1ffff); //延时
              
     GPIO_SetBits(GPIOC, GPIO_Pin_6);//点亮LED3
     Delay(0x1ffff); //延时


                   GPIO_SetBits(GPIOC, GPIO_Pin_7);//点亮LED4
                   Delay(0x1ffff); //延时
                  
                   //逆向流水灯渐灭
     GPIO_ResetBits(GPIOC, GPIO_Pin_7);//关闭LED4
                   Delay(0x1ffff); //延时


                   GPIO_ResetBits(GPIOC, GPIO_Pin_6);//关闭LED3
                   Delay(0x1ffff); //延时
        
                   GPIO_ResetBits(GPIOC, GPIO_Pin_5);//关闭LED2
     Delay(0x1ffff); //延时


                   GPIO_ResetBits(GPIOC, GPIO_Pin_4);//关闭LED1
     Delay(0x1ffff); //延时
  }


}


/*****************************************************
函数: void Delay(vu32 nCount)
参数: vu32 nCount 延时时间
描述: 延时指定时间
返回: 无
******************************************************/
void Delay(vu32 nCount)
{
  for(; nCount != 0; nCount--);
}

文章评论0条评论)

登录后参与讨论
我要评论
0
15
关闭 站长推荐上一条 /2 下一条