概述
本示例,只要介绍,如何点亮一盏灯,又离成功进了一步 ^_^。
一、环境
1、硬件 (RTL8762DK + 128M Bits Falsh)
2、软件(keil IDE)
二、点灯/LED
1、基于上一篇基础上修改,即可。
2、打开此工程
添加 rtl876x_gpio.c驱动文件
路径为:SBEE2-SDK-UPPERSTACK-IMAGE-_V1.0.0\src\mcu\peripheral\rtl876x_gpio.c
3、新建led.c、led.h文件,把他俩放在 led 文件夹即可
1)、led.h
#ifndef _LED_H_
#define _LED_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "rtl876x_gpio.h"
#include "rtl876x_pinmux.h"
#include "rtl876x_rcc.h"
void board_led_gpio_init(void);
void driver_led_gpio_init(void);
void gpio_led_demo(void);
#ifdef __cplusplus
}
#endif
#endif
2)、led.c
#include "led.h"
#include "os_timer.h"
#include "os_sched.h"
#include "locale.h"
#include "data_uart.h"
#include "board.h"
void * m_led_timer = NULL;
static void led_timer_create(void);
/**
* @brief Initialization of pinmux settings and pad settings.
* @param No parameter.
* @return void
*/
void board_led_gpio_init(void)
{
Pad_Config(GPIO_OUTPUT_PIN_2, PAD_PINMUX_MODE, PAD_IS_PWRON, PAD_PULL_NONE, PAD_OUT_ENABLE,
PAD_OUT_HIGH);
Pinmux_Config(GPIO_OUTPUT_PIN_2, DWGPIO);
}
/**
* @brief Initialize GPIO peripheral.
* @param No parameter.
* @return void
*/
void driver_led_gpio_init(void)
{
/* Initialize GPIO peripheral */
RCC_PeriphClockCmd(APBPeriph_GPIO, APBPeriph_GPIO_CLOCK, ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_PIN_OUTPUT;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_ITCmd = DISABLE;
GPIO_Init(&GPIO_InitStruct);
}
void gpio_led_demo(void)
{
/* Configure pad and pinmux firstly! */
board_led_gpio_init();
/* Initialize gpio peripheral */
driver_led_gpio_init();
led_timer_create();
}
static void timerout_handler(void)
{
/* Light up LED0 */
GPIO_WriteBit(GPIO_PIN_OUTPUT, (BitAction)(1));
data_uart_print(">> led on <<\r\n");
os_delay(1000);
/* Lights out LED0 */
GPIO_WriteBit(GPIO_PIN_OUTPUT, (BitAction)(0));
data_uart_print(">> led off <<\r\n");
os_delay(1000);
}
static void led_timer_create(void)
{
if (m_led_timer == NULL) {
os_timer_create(&m_led_timer, "m_led_timer", 1, 500, true, timerou