提交 8bae2919 编写于 作者: wuyangyong's avatar wuyangyong

update the led_examples_project

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@123 bbd45198-f89e-11dd-88c7-29a3b14d5316
上级 19c6eedc
#include <rtthread.h> #include <rtthread.h>
#include <stm32f10x.h> #include <stm32f10x.h>
#define RCC_APB2Periph_GPIO_LED RCC_APB2Periph_GPIOF #define led1_rcc RCC_APB2Periph_GPIOF
#define GPIO_LED GPIOF #define led1_gpio GPIOF
#define GPIO_Pin_LED GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 #define led1_pin (GPIO_Pin_6 | GPIO_Pin_7)
static const rt_uint16_t led_map[] = {GPIO_Pin_6, GPIO_Pin_7, GPIO_Pin_8, GPIO_Pin_9}; #define led2_rcc RCC_APB2Periph_GPIOF
static rt_uint8_t led_inited = 0; #define led2_gpio GPIOF
#define led2_pin (GPIO_Pin_8)
static void GPIO_Configuration(void)
{ void rt_hw_led_init(void)
GPIO_InitTypeDef GPIO_InitStructure; {
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_LED;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; RCC_APB2PeriphClockCmd(led1_rcc|led2_rcc,ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIO_LED, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
} GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
void LED_Configuration(void) GPIO_InitStructure.GPIO_Pin = led1_pin;
{ GPIO_Init(led1_gpio, &GPIO_InitStructure);
/* enable led clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_LED, ENABLE); GPIO_InitStructure.GPIO_Pin = led2_pin;
GPIO_Init(led2_gpio, &GPIO_InitStructure);
GPIO_Configuration(); }
}
void rt_hw_led_on(rt_uint32_t n)
void rt_hw_led_init() {
{ switch (n)
/* init led configuration if it's not inited. */ {
if (!led_inited) case 0:
{ GPIO_SetBits(led1_gpio, led1_pin);
LED_Configuration(); break;
led_inited = 1; case 1:
} GPIO_SetBits(led2_gpio, led2_pin);
} break;
default:
void rt_hw_led_on(rt_uint32_t led) break;
{ }
if (led < sizeof(led_map)/sizeof(rt_uint16_t)) }
GPIO_SetBits(GPIO_LED, led_map[led]);
} void rt_hw_led_off(rt_uint32_t n)
{
void rt_hw_led_off(rt_uint32_t led) switch (n)
{ {
if (led < sizeof(led_map)/sizeof(rt_uint16_t)) case 0:
GPIO_ResetBits(GPIO_LED, led_map[led]); GPIO_ResetBits(led1_gpio, led1_pin);
} break;
case 1:
#ifdef RT_USING_FINSH GPIO_ResetBits(led2_gpio, led2_pin);
#include <finsh.h> break;
void led(rt_uint32_t led, rt_uint32_t value) default:
{ break;
/* init led configuration if it's not inited. */ }
if (!led_inited) }
{
LED_Configuration(); #ifdef RT_USING_FINSH
led_inited = 1; #include <finsh.h>
} void led(rt_uint32_t led, rt_uint32_t value)
{
/* set led status */ if ( led == 0 )
if (value) {
rt_hw_led_on(led); /* set led status */
else switch (value)
rt_hw_led_off(led); {
} case 0:
FINSH_FUNCTION_EXPORT(led, set led[0 - 3] on[1] or off[0].) rt_hw_led_off(0);
#endif break;
case 1:
rt_hw_led_on(0);
break;
default:
break;
}
}
if ( led == 1 )
{
/* set led status */
switch (value)
{
case 0:
rt_hw_led_off(1);
break;
case 1:
rt_hw_led_on(1);
break;
default:
break;
}
}
}
FINSH_FUNCTION_EXPORT(led, set led[0 - 1] on[1] or off[0].)
#endif
/* /*
* File : application.c * File : application.c
* This file is part of RT-Thread RTOS * This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006, RT-Thread Development Team * COPYRIGHT (C) 2006, RT-Thread Development Team
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at * found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE * http://www.rt-thread.org/license/LICENSE
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2009-01-05 Bernard the first version * 2009-01-05 Bernard the first version
*/ */
/** /**
* @addtogroup STM32 * @addtogroup STM32
*/ */
/*@{*/ /*@{*/
#include <rtthread.h> #include <rtthread.h>
#include "led.h" #include "led.h"
void led(void* parameter) static void rt_thread_entry_led1(void* parameter)
{ {
/* init led configuration */ /* init led configuration */
rt_hw_led_init(); rt_hw_led_init();
while (1) while (1)
{ {
/* led on */ /* led on */
rt_hw_led_on(0); rt_kprintf("led1 on\r\n");
rt_thread_delay(50); /* sleep 0.5 second and switch to other thread */ rt_hw_led_on(0);
rt_thread_delay(50); /* sleep 0.5 second and switch to other thread */
/* led off */
rt_hw_led_off(0); /* led off */
rt_thread_delay(50); rt_kprintf("led1 off\r\n");
} rt_hw_led_off(0);
} rt_thread_delay(50);
}
int rt_application_init() }
{
rt_thread_t thread; char thread_led2_stack[1024];
struct rt_thread thread_led2;
/* create led thread */ void rt_thread_entry_led2(void* parameter)
thread = rt_thread_create("led", {
led, RT_NULL, unsigned int count=0;
512, while (1)
20, 5); {
if (thread != RT_NULL) /* led on */
rt_thread_startup(thread); rt_kprintf("led2 on,count : %d\r\n",count);
count++;
return 0; rt_hw_led_on(1);
} rt_thread_delay(RT_TICK_PER_SECOND);
/*@}*/ /* led off */
rt_kprintf("led2 off\r\n");
rt_hw_led_off(1);
rt_thread_delay(RT_TICK_PER_SECOND);
}
}
int rt_application_init()
{
rt_thread_t thread;
/* create led1 thread */
thread = rt_thread_create("led1",
rt_thread_entry_led1, RT_NULL,
512,
20, 5);
if (thread != RT_NULL)
rt_thread_startup(thread);
//------- init led2 thread
rt_thread_init(&thread_led2,
"led2",
rt_thread_entry_led2,
RT_NULL,
&thread_led2_stack[0],
sizeof(thread_led2_stack),10,10);
rt_thread_startup(&thread_led2);
return 0;
}
/*@}*/
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册