EDN首页   博客首页

日志档案

发表于 2008-8-10 22:01:05

56

标签: STM32  

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

要做好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--);
}

系统分类: 单片机   |   用户分类: 单片机   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1454)    回复(7)  

投一票您将和博主都有获奖机会!

  • pioiufg

    2008-8-11 10:21:17

    不错,挺明了的

  • lizhaohong

    2008-8-13 0:02:50

    支持简单的,容易看明白,哈哈

  • chenshiso

    2008-8-15 14:27:30

    不错

  • jameswang050574

    2008-8-15 16:29:55

    支持一下!

  • leihao509

    2008-8-17 15:24:25

    请问SMT32用KEIL 可以编程吗? 有相关的资料可以介绍吗。。。

  • promcu

    2008-8-19 23:50:53

    可以的,用Keil uVision3,你网上找找RealView MDK 3.22就可以了

  • 小小鸟

    2008-8-22 13:49:12

    可以将图片贴上来,这样更好!