要做好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条评论)
登录后参与讨论