update the led_examples_project
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@123 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
parent
19c6eedc69
commit
8bae291939
|
@ -1,70 +1,96 @@
|
||||||
#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;
|
RCC_APB2PeriphClockCmd(led1_rcc|led2_rcc,ENABLE);
|
||||||
|
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_Init(GPIO_LED, &GPIO_InitStructure);
|
|
||||||
|
GPIO_InitStructure.GPIO_Pin = led1_pin;
|
||||||
|
GPIO_Init(led1_gpio, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
GPIO_InitStructure.GPIO_Pin = led2_pin;
|
||||||
|
GPIO_Init(led2_gpio, &GPIO_InitStructure);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LED_Configuration(void)
|
void rt_hw_led_on(rt_uint32_t n)
|
||||||
{
|
{
|
||||||
/* enable led clock */
|
switch (n)
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_LED, ENABLE);
|
|
||||||
|
|
||||||
GPIO_Configuration();
|
|
||||||
}
|
|
||||||
|
|
||||||
void rt_hw_led_init()
|
|
||||||
{
|
|
||||||
/* init led configuration if it's not inited. */
|
|
||||||
if (!led_inited)
|
|
||||||
{
|
{
|
||||||
LED_Configuration();
|
case 0:
|
||||||
led_inited = 1;
|
GPIO_SetBits(led1_gpio, led1_pin);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
GPIO_SetBits(led2_gpio, led2_pin);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void rt_hw_led_on(rt_uint32_t led)
|
void rt_hw_led_off(rt_uint32_t n)
|
||||||
{
|
{
|
||||||
if (led < sizeof(led_map)/sizeof(rt_uint16_t))
|
switch (n)
|
||||||
GPIO_SetBits(GPIO_LED, led_map[led]);
|
{
|
||||||
}
|
case 0:
|
||||||
|
GPIO_ResetBits(led1_gpio, led1_pin);
|
||||||
void rt_hw_led_off(rt_uint32_t led)
|
break;
|
||||||
{
|
case 1:
|
||||||
if (led < sizeof(led_map)/sizeof(rt_uint16_t))
|
GPIO_ResetBits(led2_gpio, led2_pin);
|
||||||
GPIO_ResetBits(GPIO_LED, led_map[led]);
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RT_USING_FINSH
|
#ifdef RT_USING_FINSH
|
||||||
#include <finsh.h>
|
#include <finsh.h>
|
||||||
void led(rt_uint32_t led, rt_uint32_t value)
|
void led(rt_uint32_t led, rt_uint32_t value)
|
||||||
{
|
{
|
||||||
/* init led configuration if it's not inited. */
|
if ( led == 0 )
|
||||||
if (!led_inited)
|
|
||||||
{
|
{
|
||||||
LED_Configuration();
|
/* set led status */
|
||||||
led_inited = 1;
|
switch (value)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
rt_hw_led_off(0);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
rt_hw_led_on(0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( led == 1 )
|
||||||
|
{
|
||||||
/* set led status */
|
/* set led status */
|
||||||
if (value)
|
switch (value)
|
||||||
rt_hw_led_on(led);
|
{
|
||||||
else
|
case 0:
|
||||||
rt_hw_led_off(led);
|
rt_hw_led_off(1);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
rt_hw_led_on(1);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
FINSH_FUNCTION_EXPORT(led, set led[0 - 3] on[1] or off[0].)
|
FINSH_FUNCTION_EXPORT(led, set led[0 - 1] on[1] or off[0].)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#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();
|
||||||
|
@ -28,27 +28,58 @@ void led(void* parameter)
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
/* led on */
|
/* led on */
|
||||||
|
rt_kprintf("led1 on\r\n");
|
||||||
rt_hw_led_on(0);
|
rt_hw_led_on(0);
|
||||||
rt_thread_delay(50); /* sleep 0.5 second and switch to other thread */
|
rt_thread_delay(50); /* sleep 0.5 second and switch to other thread */
|
||||||
|
|
||||||
/* led off */
|
/* led off */
|
||||||
|
rt_kprintf("led1 off\r\n");
|
||||||
rt_hw_led_off(0);
|
rt_hw_led_off(0);
|
||||||
rt_thread_delay(50);
|
rt_thread_delay(50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char thread_led2_stack[1024];
|
||||||
|
struct rt_thread thread_led2;
|
||||||
|
void rt_thread_entry_led2(void* parameter)
|
||||||
|
{
|
||||||
|
unsigned int count=0;
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
/* led on */
|
||||||
|
rt_kprintf("led2 on,count : %d\r\n",count);
|
||||||
|
count++;
|
||||||
|
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()
|
int rt_application_init()
|
||||||
{
|
{
|
||||||
rt_thread_t thread;
|
rt_thread_t thread;
|
||||||
|
|
||||||
/* create led thread */
|
/* create led1 thread */
|
||||||
thread = rt_thread_create("led",
|
thread = rt_thread_create("led1",
|
||||||
led, RT_NULL,
|
rt_thread_entry_led1, RT_NULL,
|
||||||
512,
|
512,
|
||||||
20, 5);
|
20, 5);
|
||||||
if (thread != RT_NULL)
|
if (thread != RT_NULL)
|
||||||
rt_thread_startup(thread);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue