void System_VddPowerManager(void *param)
{
rt_uint16_t Vdd_PowerVoltageAverage;
ADC_Set_RefVoltage(ADC_VDD_VSS_REFERENCE_VOLTAGE);
Vdd_PowerVoltageAverage = ADC_Converse(ADC_INTERREFVOLT, 10, NULL);
Vdd_PowerDetectCount++;
//内部基准电压为1.45V,
Vdd_PowerVoltageAverage = (1450UL*4095UL/Vdd_PowerVoltageAverage);
rt_kprintf ("system vdd voltage value: %d;\n", Vdd_PowerVoltageAverage);
}
代码如上,使用控制台命令方式创建定时器,使用完成后删除,再次用MSH无法创建定时器。也就是上面的代码运行一次后不能再运行
int Power_Detect(void)
{
rt_timer_t power_timer;
power_timer = rt_timer_create("power timer", System_VddPowerManager,
RT_NULL, 50, RT_TIMER_FLAG_PERIODIC);
if (1){//power_timer != RT_NULL) {
rt_timer_start(power_timer);
while (Vdd_PowerDetectCount < 5) {
rt_thread_mdelay(100);
}
rt_timer_stop(power_timer);
rt_timer_delete(power_timer);
}
return 0;
}
MSH_CMD_EXPORT(Power_Detect, detect system power);