113 lines
2.8 KiB
C
113 lines
2.8 KiB
C
|
#include "mw_led.h"
|
||
|
#include <stdio.h>
|
||
|
/* led pin define */
|
||
|
// LED0 PA8
|
||
|
#define IO_LED0_PORT (GPIOC)
|
||
|
#define IO_LED0_RCC_PERIPH (RCC_APB2Periph_GPIOC)
|
||
|
#define IO_LED0_PIN (GPIO_Pin_13)
|
||
|
// LED0 PD2
|
||
|
#define IO_LED1_PORT (GPIOC)
|
||
|
#define IO_LED1_RCC_PERIPH (RCC_APB2Periph_GPIOC)
|
||
|
#define IO_LED1_PIN (GPIO_Pin_14)
|
||
|
|
||
|
|
||
|
// led middleware instantiation
|
||
|
mw_led_t led_drv_buf[led_num];
|
||
|
// {
|
||
|
// [Led0] = {mw_led0_init, mw_led0_on, mw_led0_off},
|
||
|
// [Led1] = {mw_led1_init, mw_led1_on, mw_led1_off}
|
||
|
// };
|
||
|
|
||
|
|
||
|
|
||
|
mw_led_t mw_get_led_obj(led_type_enum e_led_type)
|
||
|
{
|
||
|
if(e_led_type < led_num)
|
||
|
{
|
||
|
return led_drv_buf[e_led_type];
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
while(1);
|
||
|
|
||
|
// return NULL;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/* led 0 start */
|
||
|
void mw_led0_init(void)
|
||
|
{
|
||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||
|
|
||
|
RCC_APB2PeriphClockCmd(IO_LED0_RCC_PERIPH, ENABLE); //使能 PA 端口时钟
|
||
|
|
||
|
GPIO_InitStructure.GPIO_Pin = IO_LED0_PIN; //LED0-->PA.8 端口配置
|
||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
|
||
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO 口速度为 50MHz
|
||
|
GPIO_Init(IO_LED0_PORT, &GPIO_InitStructure); //初始化 GPIOA.8
|
||
|
// 初始化:高
|
||
|
GPIO_SetBits(IO_LED0_PORT, IO_LED0_PIN); //PA.8 输出高
|
||
|
}
|
||
|
|
||
|
void mw_led0_on(void)
|
||
|
{
|
||
|
GPIO_SetBits(IO_LED0_PORT, IO_LED0_PIN);
|
||
|
}
|
||
|
|
||
|
void mw_led0_off(void)
|
||
|
{
|
||
|
GPIO_ResetBits(IO_LED0_PORT, IO_LED0_PIN);
|
||
|
}
|
||
|
|
||
|
/* led 0 end */
|
||
|
|
||
|
|
||
|
/* led 1 start */
|
||
|
void mw_led1_init(void)
|
||
|
{
|
||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||
|
|
||
|
RCC_APB2PeriphClockCmd(IO_LED1_RCC_PERIPH, ENABLE); //使能 PD 端口时钟
|
||
|
|
||
|
GPIO_InitStructure.GPIO_Pin = IO_LED1_PIN; //LED0-->PD.2 端口配置
|
||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
|
||
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO 口速度为 50MHz
|
||
|
GPIO_Init(IO_LED1_PORT, &GPIO_InitStructure); //初始化 GPIOD.2
|
||
|
// 初始化:高
|
||
|
GPIO_SetBits(IO_LED1_PORT, IO_LED1_PIN); //PD.2 输出高
|
||
|
}
|
||
|
|
||
|
void mw_led1_on(void)
|
||
|
{
|
||
|
GPIO_SetBits(IO_LED1_PORT, IO_LED1_PIN);
|
||
|
}
|
||
|
|
||
|
void mw_led1_off(void)
|
||
|
{
|
||
|
GPIO_ResetBits(IO_LED1_PORT, IO_LED1_PIN);
|
||
|
}
|
||
|
|
||
|
/* led 1 end */
|
||
|
|
||
|
void mw_led_drv_init(void)
|
||
|
{
|
||
|
led_type_enum e_val;
|
||
|
/* led0 installation */
|
||
|
led_drv_buf[Led0].led_drv = Led0;
|
||
|
led_drv_buf[Led0].init = mw_led0_init;
|
||
|
led_drv_buf[Led0].on = mw_led0_on;
|
||
|
led_drv_buf[Led0].off = mw_led0_off;
|
||
|
/* led1 installation */
|
||
|
led_drv_buf[Led1].led_drv = Led1;
|
||
|
led_drv_buf[Led1].init = mw_led1_init;
|
||
|
led_drv_buf[Led1].on = mw_led1_on;
|
||
|
led_drv_buf[Led1].off = mw_led1_off;
|
||
|
/* init all led peripherals */
|
||
|
for(e_val = Led0; e_val < led_num; e_val++)
|
||
|
{
|
||
|
led_drv_buf[e_val].init();
|
||
|
}
|
||
|
}
|