增加第一次上电开机的功能

这里是增加第一次上电开机功能,具体修改如下:

在setup.c下找到setup_arch()

void setup_arch()//这个函数就是耳机最早运行的地方
{
	......
	extern u8 p11_reset_src;
	extern u8 p33_reset_src;
	extern u8 p33_reset_source_dump();
	extern u8 p11_reset_source_dump();
	p11_reset_src = p11_reset_source_dump();
	p33_reset_src = p33_reset_source_dump();
	
	clock_dump();//加在这个函数的前面
	......
}

在app_main.c下添加:

u8 p11_reset_src = 0;
u8 p33_reset_src = 0;
u8 my_power_on_flag = 0;

void power_reset_source_info(void)
{
	my_power_on_flag = 0;
	if((p11_reset_src == 0xff)&&(p33_reset_src == 0xff))
	{
		printf("Wake UP");
		r_printf("get_wakeup_source:0x%x",
		get_wakeup_source());
		return;
	}
	if(p11_reset_src & BIT(0))
	{
		printf("PVDD POR 11111");
	}
	if(p11_reset_src & BIT(1))
	{
		printf("DVDD POR 22222");//按键按下的时候就是这里
	}
	if(p11_reset_src & BIT(2))
	{
		my_power_on_flag = 1;
		printf("P33 RESET");
		if(p33_reset_src & BIT(0))
		{
			printf("VDDIO POR 3333");
		}
		if(p33_reset_src & BIT(1))
		{
			printf("VDDIO LVD");
		}
		if(p33_reset_src & BIT(2))
		{
			printf("VCM");
		}
		if(p33_reset_src & BIT(3))
		{
			printf("PPINR 8s reset");
		}
		if(p33_reset_src & BIT(4))
		{
			printf("SYS RESET");
		}
		if(p33_reset_src & BIT(5))
		{
			printf("P33 SOFT RESET");
		}
	}
	if(p11_reset_src & BIT(3))
	{
		printf("WDT RESET");
	}
	if(p11_reset_src & BIT(4))
	{
		printf("P11 SOFT RESET");
	}
	if(p11_reset_src & BIT(5))
	{
		printf("MAIN_SYS RESET");
	}
}

函数需要放到app_main()下运行:

void app_main()
{
	printf("in app_main  p11_reset_src = %d ,p33_reset_src = %d !\n",p11_reset_src,p33_reset_src);
	power_reset_source_info();//放在最前面去执行
	......
}

然后再到判断开机的地方进行执行

void check_power_on_key(void)
{
    u32 delay_10ms_cnt = 0;
    while (1) {
        clr_wdt();
        os_time_dly(1);
		if(my_power_on_flag == 1)//这里就是实现第一次上电开机的地方
		{
			my_power_on_flag = 0;
			printf("in check_power_on_key first bat power on !\n");
			return;
		}
        extern u8 get_power_on_status(void);
        if (get_power_on_status()) {
            log_info("+");
            delay_10ms_cnt++;
            if (delay_10ms_cnt > 70)//这里就是修改长按多久开机
            {
                return;
            }
        } else {
            log_info("-");
            delay_10ms_cnt = 0;
            log_info("enter softpoweroff\n");
            power_set_soft_poweroff();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值