不一样的LED跑马灯实验
登录瑞萨的云编译器,看着《arduino学习》的书籍。简单的入手函数setup();简单的配置,单一的Loop()函数,已有的demo示例代码。点击编译即可……云云
这里不再赘述,请大家参考 瑞萨小鱼 及 campozeng 的帖子(参见附1,附2)即可。我去做我的“突围”事情了。
上面的几句无不表示一个词“简单”那arduino有多简单,让我们与TI Stellaris LM3S811,ST STM32F103这三个型号做一个对比,就知道Arduino有多“简单”了。
让我们首先看一下LM3S811:
SysCtlClockSet(SYSCTL_SYSDIV_8 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIODirModeSet(LED3_PORT, LED3_PIN, GPIO_DIR_MODE_OUT);
GPIOPadConfigSet(LED3_PORT, LED3_PIN, GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
While(TRUE)
{
GPIOPinWrite(LED3_PORT, LED3_PIN, LED3_PIN);
OSTimeDlyHMSM(0, 0, 0, 100);
GPIOPinWrite(LED3_PORT, LED3_PIN, ~LED3_PIN);
OSTimeDlyHMSM(0, 0, 0, 100);
}
至此,简单的LED灯闪烁完成;以上对于LM3S芯片还需要添加jtag保护,修改启动文件等等……
下面我们再来看看stm32f103的LED灯的设置与启动过程:
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_LED | RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO初始化结构体
GPIO_InitStructure.GPIO_Pin = LED1_PIN | LED2_PIN | LED3_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOF, &GPIO_InitStructure);
While(TRUE)
{
GPIO_ResetBits(LED_PORT, LED1_PIN);
Delayms(5);
GPIO_SetBits(LED_PORT, LED1_PIN);
Delayms(5);
}
还好ST公司将启动文件与sysinit已经写好了,可是还有这么多行……
下面我们再来看看arduino如何呢?
void setup()
{
pinMode(PIN_LED0,OUTPUT);
}
void loop()
{
digitalWrite(PIN_LED0, 1);
delay(INTERVAL);
digitalWrite(PIN_LED0, 0);
delay(INTERVAL);
}
嘿嘿,还是Arduino简单吧!现在瑞萨居然把编译器都省得装了。硬盘资源占有为0%,正好适合我们这使用小容量SSD硬盘的用户。
新一轮的sakura开发板即将开始申请了,亲爱的坛友们,你们还觉得Arduino难吗?
附1:瑞萨小鱼的sakura开发进程http://forum.eepw.com.cn/thread/222365/1
附2:Campozeng的sakura开发进程
http://forum.eepw.com.cn/thread/222049/1