コード例 #1
0
ファイル: stm32l1xx_it.c プロジェクト: virtmedia/ultramicron
// ===============================================================================================
void Pump_now(FunctionalState pump)
{

	if(pump==ENABLE && !Power.Pump_deny)
	{
		Power.Pump_active=ENABLE;
		dac_on();  // Включаем ЦАП
		TIM9->EGR |= 0x0001;  // Устанавливаем бит UG для принудительного сброса счетчика
		TIM_ClearITPendingBit(TIM9, TIM_IT_Update);
		
		TIM_CCxCmd(TIM9, TIM_Channel_1, TIM_CCx_Enable); // разрешить накачку	
		TIM_ITConfig(TIM9, TIM_IT_Update, ENABLE);

		comp_on(); // Включаем компаратор
	} else {
		
		TIM_CCxCmd(TIM9, TIM_Channel_1, TIM_CCx_Disable); // запретить накачку
		TIM_ITConfig(TIM9, TIM_IT_Update, DISABLE);
		pump_counter_avg_impulse_by_1sec[0]++;
		comp_off();              // Выключаем компаратор
		dac_off(); // Выключаем ЦАП
		TIM_ClearITPendingBit(TIM9, TIM_IT_Update);
		Power.Pump_active=DISABLE;
	}
}
コード例 #2
0
ファイル: power.c プロジェクト: goshafreelock/sc-cd-pro
/*----------------------------------------------------------------------------*/
void system_sleep(void)
{
#if OSC_CLOCK == 24000000L
#else
    dac_off();				//关闭DAC,需要约3S钟才没有杂音,如果功放有mute功能,也可以将此句换成mute功放.由于dac_off()调用了delay_10ms,所以在这之前不能关中断
    EA = 0;
    DACCON0 = 0xc0;			//再次关DAC,如果没有执行dac_off(),DAC同样可以被关掉,只是会有杂音,但如果控制了功放的mute,也不会有杂音
    DACCON1 = 0;
    DACCON2 = 0;
    Delay(20000);
    USBCON0 = 0;			//关USB
    ADCCON = 0;				//关ADC
    P0DIR = 0xFF;			//关IO,具体的原则为:所有IO必须为数字功能,并设成输出,如果IO已经被外围电路拉成了固定状态(如一个用于选择FM芯片的IO口,已经通过外部电阻接到地),
    P1DIR = 0xFF;			//则不用再作其它处理,但如果IO是悬空的,则需要将其上拉或下拉打开,保证其电平不会处于浮空。
    P2DIR = 0xFF;
    P3DIR = 0xFF;
    P4DIR = 0xFF;

    P0IE = 0xff;
    P0PU = 0;
    P1PU = 0;
    P2PU = 0xff;
    P3PU = 0;
    P4PU = 0xff;

    P0PD = 0x7f;			//本例中,P07正常时作为ADKEY使用,sleep后,作为数字口,通过下降沿来reset系统,因ADKEY外部有上拉,所以内部不能开上,下拉
    P1PDB = 0;
    P1PDA = 0xff;
    P3PD = 0xff;

#if OSC_CLOCK == 7600000L
    PLL_input(PLL_IN_76M);
#endif

#if OSC_CLOCK == 12000000L
    PLL_input(PLL_IN_12M);
#endif

    Delay(1000);
    P3IE = 0x7F;

#if OSC_CLOCK == 32768L
    mainclock_select(MAIN_CLK_32K);
#else
    CLKCON |= 0X4;
    mainclock_select(MAIN_CLK_RC);
#endif

    CLKCON &= ~0x36;
    WKUPPND &= 0xf0;
    WKUPCON |= BIT(2) | BIT(6);			//本例使用P07作为唤醒IO
    PCON = 1;
#endif
}