180 lines
4.2 KiB
C
180 lines
4.2 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
#include "os_utils.h"
|
|
#include "chip_reg_base.h"
|
|
#include "hw_reg_api.h"
|
|
#include "ahb.h"
|
|
#include "gpio_mtx.h"
|
|
#include "iot_led.h"
|
|
#include "ledc.h"
|
|
#include "sec_glb.h"
|
|
#include "iot_io.h"
|
|
#include "dbg_io.h"
|
|
|
|
#define REG32(a) (*((volatile uint32_t *)(a)))
|
|
|
|
void gpio_sel()
|
|
{
|
|
gpio_mtx_enable();
|
|
gpio_sig_info_t sfc = {
|
|
2,
|
|
{
|
|
{IO_TYPE_OUT, 0, 0, 0xff, 49},
|
|
{IO_TYPE_OUT, 0, 1, 0xff, 50},
|
|
}
|
|
};
|
|
gpio_module_pin_select(&sfc);
|
|
gpio_module_sig_select(&sfc, GPIO_MTX_MODE_MATRIX);
|
|
|
|
// gpio output inv
|
|
gpio_pin_oinv(1, 1);
|
|
gpio_pin_oinv(0, 1);
|
|
}
|
|
|
|
void led_ctrl_test()
|
|
{
|
|
ledc_ena_rst();
|
|
|
|
//set l2h value
|
|
ledc_set_l2h_val(0, 0x00);
|
|
|
|
// config target
|
|
ledc_target_cfg(0, 1, 0, 1, 1, 0);
|
|
ledc_target_value(0, 0x100);
|
|
|
|
// set timer
|
|
ledc_timer_cfg(0, 0, 0, 0, 0x20000, 11);
|
|
|
|
// conf ledc
|
|
ledc_cfg(0, 0, 1, 0);
|
|
}
|
|
|
|
void led_ctrl_test2()
|
|
{
|
|
iot_led_init();
|
|
volatile int i = 0;
|
|
iot_led_blink(0, 1);
|
|
int count = 0;
|
|
iot_led_blink(0, 1);
|
|
while(1) {
|
|
for(i = 0; i< 1000000; i++);
|
|
count++;
|
|
if (count > 10) {
|
|
iot_led_off(1);
|
|
} else if (count > 5) {
|
|
iot_printf("turn off\n");
|
|
iot_led_off(0);
|
|
} else if (count > 3) {
|
|
iot_printf("count %d\n", count);
|
|
iot_led_blink(1, 1);
|
|
REG32(0x44007048) = 0x80;
|
|
}
|
|
}
|
|
}
|
|
|
|
void led_ctrl_test3()
|
|
{
|
|
volatile int i = 0;
|
|
|
|
int count = 0;
|
|
iot_led_off(1);
|
|
while(1) {
|
|
for(i = 0; i< 10000000; i++);
|
|
count++;
|
|
if (count > 20) {
|
|
count = 0;
|
|
} else if (count > 10) {
|
|
iot_led_on(0);
|
|
} else if (count > 5) {
|
|
iot_printf("turn off\n");
|
|
iot_led_off(0);
|
|
} else if (count > 3) {
|
|
REG32(0x44007048) = 0x80;
|
|
}
|
|
iot_led_blink(1, 1);
|
|
iot_printf("count %d\n", count);
|
|
}
|
|
}
|
|
|
|
void led_ctrl_test4()
|
|
{
|
|
iot_led_blink(0, 1);
|
|
}
|
|
|
|
void led_ctrl_test5()
|
|
{
|
|
|
|
//iot_led_light(0, 1000);
|
|
}
|
|
|
|
void led_ctrl_test_kl2()
|
|
{
|
|
ledc_ena_rst();
|
|
|
|
// config timer, timer0 for led0, timer1 for led1, timer2 for reference led
|
|
ledc_timer_cfg(0, 0, 0, 0, 0x10000, 5);
|
|
ledc_timer_cfg(1, 0, 0, 0, 0x10000, 5);
|
|
ledc_timer_cfg(2, 0, 0, 0, 0x10001, 5);
|
|
|
|
#if 1 // enable reference led clock
|
|
ledc_set_l2h_val(8, 0);
|
|
ledc_target_value(8, 0xa0);
|
|
ledc_target_cfg(8, LED_TARGET_SHADOW_ENA, LED_TARGET_DEC, 8, 1, 2);
|
|
// led config
|
|
ledc_cfg(8, 1, 1, 2);
|
|
#endif
|
|
|
|
#if 1 // enable test led0
|
|
ledc_set_l2h_val(0, 0);
|
|
ledc_target_value(0, 0xa0);
|
|
ledc_target_cfg(0, LED_TARGET_SHADOW_ENA, LED_TARGET_DEC, 0, 1, 1);
|
|
ledc_cfg(0, 0, 1, 0);
|
|
|
|
// use reference led
|
|
ledc_out_ref(0, 1);
|
|
#endif
|
|
|
|
#if 1 // enable test led1
|
|
ledc_set_l2h_val(1, 0);
|
|
ledc_target_value(1, 0xa0);
|
|
ledc_target_cfg(1, LED_TARGET_SHADOW_ENA, LED_TARGET_DEC, 0, 1, 1);
|
|
ledc_cfg(1, 0, 1, 1);
|
|
|
|
// use reference led
|
|
ledc_out_ref(1, 1);
|
|
#endif
|
|
|
|
return;
|
|
}
|
|
|
|
int main(void) {
|
|
dbg_uart_init();
|
|
gpio_sel();
|
|
iot_printf("test led\n");
|
|
#if 0 // kunlun1
|
|
iot_led_init();
|
|
//led_ctrl_test();
|
|
//led_ctrl_test2();
|
|
//led_ctrl_test3();
|
|
//led_ctrl_test4();
|
|
//led_ctrl_test5();
|
|
#else // kunlun2
|
|
led_ctrl_test_kl2();
|
|
#endif
|
|
iot_printf("end.......\n");
|
|
return 0;
|
|
}
|
|
|