添加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);
}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值