添加NTC功能

系统有一个自带的NTC功能,但是只能检测温度高于某值,但是如果要添加上限和下限,就需要自己写,具体实现如下:
config.h中:

/*****************************************************************************
 * Module    : NTC检测功能
 *****************************************************************************/
#define POTENT_KEY        1          //NTC功能标志位

bsp_key.c下key_init()中:

#if POTENT_KEY
	adc_ch |= BIT(ADCCH_PA7);
#endif

bsp_sys.c 中,创建变量用于承接IO口的值

#if POTENT_KEY
u8 in_first_num = 0;//承接每次IO口获取到的值
#endif

bsp_sys.h 中,声明为全局变量

#if POTENT_KEY
extern u8 in_first_num;//承接每次IO口获取到的值
#endif

bsp_sys.c下usr_tmr5ms_isr()中:

//每1S检测一次
if (sys.tmr5ms_cnt3 == 200)
{
#if POTENT_KEY
	in_first_num = (u8)(adc_cb.sfr[ADCCH_PA7] >> 2);
#endif
}

bsp_charge.c下bsp_charge_box_process_do()中,添加温度范围,数值为实际测试:

#if POTENT_KEY
if((in_first_num < 50) || (in_first_num > 158))
{//关闭充电
	RTCCON8 &= BIT(1);
	LED_PWR_SET_OFF();
}
else if((in_first_num >= 50)&&(in_first_num <= 158))
{//唤醒充电
	RTCCON8 |=~BIT(1);
	LED_PWR_SET_ON();
}
#endif

func_bt.c下fun_bt()中:

#if POTENT_KEY
if((in_first_num > 155)||(in_first_num < 49))//开机情况下,超过温度就关机
{
	func_message(KLH_PLAY_PWR_USER_DEF);
}
#endif

还有一个需要注意:由于IO口获取电压在中断中获取,需要在充电的时候将中断开启。具体如下:
bsp_sys.c下bsp_sys_init中:

if(CHARGE_DC_IN())
{
	/// enable user timer for display & dac
	user_tmr_set_enable(1, 1);
	led_init();
	key_init();
#if PWM_RGB_EN
	pwm_init();
#endif // PWM_RGB_EN
	plugin_init();	
}
else
{
	led_init();
	key_init();
#if PWM_RGB_EN
	pwm_init();
#endif // PWM_RGB_EN
	plugin_init();	
	/// enable user timer for display & dac
	user_tmr_set_enable(1, 1);
}

还不清楚的小伙伴可以添加我的个人微信 lqy—1997 (中间是三个英文的杠)进行交流。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页