12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #include <rtthread.h>
- #include <stm32f10x.h>
- #define RCC_APB2Periph_GPIO_LED RCC_APB2Periph_GPIOF
- #define GPIO_LED GPIOF
- #define GPIO_Pin_LED GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9
- static const rt_uint16_t led_map[] = {GPIO_Pin_6, GPIO_Pin_7, GPIO_Pin_8, GPIO_Pin_9};
- static rt_uint8_t led_inited = 0;
- static void GPIO_Configuration(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_LED;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIO_LED, &GPIO_InitStructure);
- }
- void LED_Configuration(void)
- {
- /* enable led clock */
- 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();
- led_inited = 1;
- }
- }
- void rt_hw_led_on(rt_uint32_t led)
- {
- if (led < sizeof(led_map)/sizeof(rt_uint16_t))
- GPIO_SetBits(GPIO_LED, led_map[led]);
- }
- void rt_hw_led_off(rt_uint32_t led)
- {
- if (led < sizeof(led_map)/sizeof(rt_uint16_t))
- GPIO_ResetBits(GPIO_LED, led_map[led]);
- }
- #ifdef RT_USING_FINSH
- #include <finsh.h>
- void led(rt_uint32_t led, rt_uint32_t value)
- {
- /* init led configuration if it's not inited. */
- if (!led_inited)
- {
- LED_Configuration();
- led_inited = 1;
- }
- /* set led status */
- if (value)
- rt_hw_led_on(led);
- else
- rt_hw_led_off(led);
- }
- FINSH_FUNCTION_EXPORT(led, set led[0 - 3] on[1] or off[0].)
- #endif
|