249 lines
7.9 KiB
C
249 lines
7.9 KiB
C
/*——————————————————————————
|
||
* 文 件 名:Led.c
|
||
* 文件说明:Led源文件
|
||
*
|
||
* 当前版本:V8.0
|
||
* 作 者:ZL
|
||
* 开始日期:2013-12-30
|
||
*———————————————————————————*/
|
||
#include "Led.h"
|
||
#include "include.h"
|
||
|
||
|
||
bool OLDNEW_VERSION_DETECT = false;//false 旧版本,true 新版本
|
||
/*
|
||
st_gpio_config up_send_led = LED_INIT(UP_SEND);
|
||
st_gpio_config up_receive_led = LED_INIT(UP_RECEIVE);
|
||
st_gpio_config down_send_led = LED_INIT(DOWN_SEND);
|
||
st_gpio_config down_receive_led = LED_INIT(DOWN_RECEIVE);
|
||
st_gpio_config alarm_led = LED_INIT(ALARM);
|
||
st_gpio_config running_led = LED_INIT(RUNNING);
|
||
*/
|
||
|
||
/*
|
||
st_gpio_config running_led = {GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_1, GPIO_Mode_IPU}; //PA1 运行
|
||
st_gpio_config alarm_led = {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_3, GPIO_Mode_IPU}; //PC3 告警
|
||
|
||
st_gpio_config plcRx_led = {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_0, GPIO_Mode_IPU}; //PC0 PLC RX
|
||
st_gpio_config plcTx_led = {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_2, GPIO_Mode_IPU}; //PC2 PLC TX
|
||
|
||
st_gpio_config up_RS485Rx_led = {GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_12, GPIO_Mode_IPU}; //PA12 4851RX 485上行
|
||
st_gpio_config up_RS485Tx_led = {GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_11, GPIO_Mode_IPU}; //PA11 4851TX
|
||
|
||
st_gpio_config MBUS1Rx_led = {GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_8, GPIO_Mode_IPU}; //PA8 MBUS1RX
|
||
st_gpio_config MBUS1Tx_led = {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_9, GPIO_Mode_IPU}; //PC9 MBUS1TX
|
||
|
||
st_gpio_config dn_RS485Rx_led = {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_8, GPIO_Mode_IPU}; //PC8 4852RX 485下行
|
||
st_gpio_config dn_RS485Rx_led = {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_7, GPIO_Mode_IPU}; //PC7 4852TX
|
||
|
||
st_gpio_config MBUS2Rx_led = {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_6, GPIO_Mode_IPU}; //PC6 MBUS2RX
|
||
st_gpio_config MBUS2Tx_led = {GPIOB, RCC_APB2Periph_GPIOB, GPIO_Pin_15, GPIO_Mode_IPU}; //PB15 MBUS2TX
|
||
*/
|
||
|
||
st_gpio_config led_boardharddetect[1] =
|
||
{
|
||
{GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_1, GPIO_Mode_IPU}, //PA1 运行
|
||
};
|
||
|
||
|
||
|
||
st_gpio_config led_list[] =
|
||
{
|
||
#if HARDBOARD_VERSION == 0
|
||
{GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_1, GPIO_Mode_IPU}, //PA1 运行
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_3, GPIO_Mode_IPU}, //PC3 告警
|
||
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_0, GPIO_Mode_IPU}, //PC0 PLC RX RED
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_2, GPIO_Mode_IPU}, //PC2 PLC TX
|
||
|
||
{GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_12, GPIO_Mode_IPU}, //PA12 4851RX RED
|
||
{GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_11, GPIO_Mode_IPU}, //PA11 4851TX GREEN
|
||
|
||
{GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_8, GPIO_Mode_IPU}, //PA8 MBUS1RX
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_9, GPIO_Mode_IPU}, //PC9 MBUS1TX
|
||
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_8, GPIO_Mode_IPU}, //PC8 4852RX
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_7, GPIO_Mode_IPU}, //PC7 4852TX
|
||
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_6, GPIO_Mode_IPU}, //PC6 MBUS2RX
|
||
{GPIOB, RCC_APB2Periph_GPIOB, GPIO_Pin_15, GPIO_Mode_IPU}, //PB15 MBUS2TX
|
||
|
||
|
||
// {GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_1, GPIO_Mode_IPD}, //PA1 运行
|
||
// {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_3, GPIO_Mode_IPD}, //PC3 告警
|
||
//
|
||
// {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_0, GPIO_Mode_IPD}, //PC0 PLC RX RED
|
||
// {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_2, GPIO_Mode_IPD}, //PC2 PLC TX
|
||
//
|
||
// {GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_12, GPIO_Mode_IPD}, //PA12 4851RX RED
|
||
// {GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_11, GPIO_Mode_IPD}, //PA11 4851TX GREEN
|
||
//
|
||
// {GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_8, GPIO_Mode_IPD}, //PA8 MBUS1RX
|
||
// {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_9, GPIO_Mode_IPD}, //PC9 MBUS1TX
|
||
//
|
||
// {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_8, GPIO_Mode_IPD}, //PC8 4852RX
|
||
// {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_7, GPIO_Mode_IPD}, //PC7 4852TX
|
||
//
|
||
// {GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_6, GPIO_Mode_IPD}, //PC6 MBUS2RX
|
||
// {GPIOB, RCC_APB2Periph_GPIOB, GPIO_Pin_15, GPIO_Mode_IPD}, //PB15 MBUS2TX
|
||
|
||
#else
|
||
{GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_1, GPIO_Mode_Out_OD}, //PA1 运行
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_3, GPIO_Mode_Out_OD}, //PC3 告警
|
||
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_0, GPIO_Mode_Out_OD}, //PC0 PLC RX RED
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_2, GPIO_Mode_Out_OD}, //PC2 PLC TX
|
||
|
||
{GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_12, GPIO_Mode_Out_OD}, //PA12 4851RX RED
|
||
{GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_11, GPIO_Mode_Out_OD}, //PA11 4851TX GREEN
|
||
|
||
{GPIOA, RCC_APB2Periph_GPIOA, GPIO_Pin_8, GPIO_Mode_Out_OD}, //PA8 MBUS1RX
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_9, GPIO_Mode_Out_OD}, //PC9 MBUS1TX
|
||
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_8, GPIO_Mode_Out_OD}, //PC8 4852RX
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_7, GPIO_Mode_Out_OD}, //PC7 4852TX
|
||
|
||
{GPIOC, RCC_APB2Periph_GPIOC, GPIO_Pin_6, GPIO_Mode_Out_OD}, //PC6 MBUS2RX
|
||
{GPIOB, RCC_APB2Periph_GPIOB, GPIO_Pin_15, GPIO_Mode_Out_OD}, //PB15 MBUS2TX
|
||
#endif
|
||
|
||
};
|
||
|
||
st_gpio_config * CurrentOperationLED = &led_list[0];
|
||
/*——————————————————————————
|
||
* 函 数 名:LED_Init
|
||
* 输入参数:led 灯
|
||
* 输出参数:None
|
||
* 返 回 值:None
|
||
* 功能说明:初始化LED灯
|
||
*——————————————————————————*/
|
||
void LED_Init(st_gpio_config led)
|
||
{
|
||
gpio_init(led);
|
||
LED_Off(led);
|
||
}
|
||
|
||
|
||
void init_all_led(void)
|
||
{
|
||
|
||
LED_Init(led_boardharddetect[0]);
|
||
if(GPIO_ReadInputDataBit(led_boardharddetect[0].GPIO_port,led_boardharddetect[0].GPIO_Pin) == 0x01)
|
||
{
|
||
OLDNEW_VERSION_DETECT = true;
|
||
}
|
||
else
|
||
{
|
||
OLDNEW_VERSION_DETECT = false;
|
||
}
|
||
|
||
for (u8 i = 0; i < sizeof(led_list) / sizeof(st_gpio_config); i++)
|
||
{
|
||
if(OLDNEW_VERSION_DETECT == false)
|
||
{
|
||
led_list[i].GPIO_mode = GPIO_Mode_IPU;
|
||
}
|
||
else
|
||
{
|
||
led_list[i].GPIO_mode = GPIO_Mode_Out_OD;
|
||
}
|
||
|
||
LED_Init(led_list[i]);
|
||
LED_Off(led_list[i]);
|
||
}
|
||
}
|
||
|
||
|
||
void test_led(void)
|
||
{
|
||
for (u8 i = 0; i < sizeof(led_list) / sizeof(st_gpio_config); i++)
|
||
{
|
||
COM_led_on(i);
|
||
//vTaskDelay( 1000 / portTICK_RATE_MS );
|
||
//COM_led_off(i);
|
||
//vTaskDelay( 1000 / portTICK_RATE_MS );
|
||
}
|
||
|
||
printf("OK\r\n");
|
||
}
|
||
|
||
|
||
void COM_led_init(u8 led)
|
||
{
|
||
LED_Init(led_list[led]);
|
||
}
|
||
|
||
void COM_led_on(u8 led)
|
||
{
|
||
LED_On(led_list[led]);
|
||
}
|
||
|
||
void COM_led_off(u8 led)
|
||
{
|
||
LED_Off(led_list[led]);
|
||
}
|
||
|
||
/*——————————————————————————
|
||
* 函 数 名:LED_On
|
||
* 输入参数:led 灯
|
||
* 输出参数:None
|
||
* 返 回 值:None
|
||
* 功能说明:点亮Led灯
|
||
*——————————————————————————*/
|
||
void LED_On(st_gpio_config led)
|
||
{
|
||
//#if HARDBOARD_VERSION == 0
|
||
if(OLDNEW_VERSION_DETECT == false)
|
||
led.GPIO_port->BSRR = led.GPIO_Pin;//GPIO_PIN[led]; //设置位为 1
|
||
//#else
|
||
else
|
||
led.GPIO_port->BRR = led.GPIO_Pin;
|
||
//#endif
|
||
}
|
||
|
||
/*——————————————————————————
|
||
* 函 数 名:LED_Off
|
||
* 输入参数:led 灯
|
||
* 输出参数:None
|
||
* 返 回 值:None
|
||
* 功能说明:关闭Led灯
|
||
*——————————————————————————*/
|
||
void LED_Off(st_gpio_config led)
|
||
{
|
||
//#if HARDBOARD_VERSION == 0
|
||
if(OLDNEW_VERSION_DETECT == false)
|
||
led.GPIO_port->BRR = led.GPIO_Pin;//GPIO_PIN[led]; //清除位为 0
|
||
//#else
|
||
else
|
||
led.GPIO_port->BSRR = led.GPIO_Pin;
|
||
//#endif
|
||
}
|
||
|
||
/*——————————————————————————
|
||
* 函 数 名:LED_Toggle
|
||
* 输入参数:led 灯
|
||
* 输出参数:None
|
||
* 返 回 值:None
|
||
* 功能说明:电平反转
|
||
*——————————————————————————*/
|
||
void LED_Toggle(st_gpio_config led)
|
||
{
|
||
//#if HARDBOARD_VERSION == 0
|
||
if(OLDNEW_VERSION_DETECT == false)
|
||
led.GPIO_port->ODR ^= led.GPIO_Pin;//GPIO_PIN[led];
|
||
//#else
|
||
else
|
||
led.GPIO_port->ODR ^= led.GPIO_Pin;
|
||
//#endif
|
||
}
|
||
|
||
|
||
void off_all_led(void)
|
||
{
|
||
for (u8 i = 0; i < sizeof(led_list) / sizeof(st_gpio_config); i++)
|
||
{
|
||
//LED_Init(led_list[i]);
|
||
LED_Off(led_list[i]);
|
||
}
|
||
}
|