/*    _______    ______     _____      ____       ___        __         _
 * |_|       |__|      |___|     |____|    |_____|   |______|  |_______| |________|
 */
static void TIMx_Mode_Config(void)
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_OCInitTypeDef  TIM_OCInitStructure;


    /* 设置TIM3CLK 时钟为72MHZ */
//  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 					//使能TIM3时钟
    macTIM_APBxClock_FUN ( macTIM_CLK, ENABLE );


    /* 基本定时器配置 */
    TIM_TimeBaseStructure.TIM_Period = div_clk;       							  //当定时器从0计数到255,即为266次,为一个定时周期
    TIM_TimeBaseStructure.TIM_Prescaler = PWM_freq;	    							//设置预分频:
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;			//设置时钟分频系数:不分频(这里用不到)
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  	//向上计数模式
    TIM_TimeBaseInit(macTIMx, &TIM_TimeBaseStructure);

    /* PWM模式配置 */
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;	    				//配置为PWM模式1
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;	//使能输出
    TIM_OCInitStructure.TIM_Pulse = 0;										  			//设置初始PWM脉冲宽度为0
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;  	  //当定时器计数值小于CCR1_Val时为低电平

    macTIM_OCxInit ( macTIMx, &TIM_OCInitStructure );	 									//使能通道3


    macTIM_OCxPreloadConfig ( macTIMx, TIM_OCPreload_Enable );						//使能预装载

    TIM_ARRPreloadConfig(macTIMx, ENABLE);			 										//使能TIM3重载寄存器ARR

    /* TIM3 enable counter */
    TIM_Cmd(macTIMx, ENABLE);                   										//使能定时器3

    TIM_ITConfig(macTIMx, TIM_IT_Update, ENABLE);										//使能update中断

    NVIC_Config_PWM();																					//配置中断优先级

}
Ejemplo n.º 2
0
int main(void)
{
    u8 mybuff[10];

	/* HT1621 端口配置 */ 
	 HT1621_GPIO_Config ();
    

	/* 通用定时器 TIMx,x[2,3,4,5] 定时配置 */	
        TIMx_Configuration();
	
	/* 配置通用定时器 TIMx,x[2,3,4,5]的中断优先级 */
	TIMx_NVIC_Configuration();

	/* 通用定时器 TIMx,x[2,3,4,5] 重新开时钟,开始计时 */
	macTIM_APBxClock_FUN (macTIM_CLK, ENABLE);
	
	HT1621_BL(OFF);      //显示背光
	HT1621_LED(OFF);    //按键背光
       Ht1621_clrbuf();      //显示初始化
       Ht1621_cls();  //清屏
       delay_ms(50);


	device_state_init();

	

	uart2_init();



#if 0	
	Ht1621_on_disp(8);	  //T14 清洗故障
	Ht1621_on_disp(9);	  //T13 光氢故障
	Ht1621_on_disp(10);  //T12 电机故障
	Ht1621_on_disp(11);  //T11 静电故障
	Ht1621_on_disp(12);    //T10 运行故障
	Ht1621Display();  //PM2.5位置显示	
#endif	

	time_tick_cnt = TICKS_PER_SECOND;

    time_tick_cnt1 = TICKS_PER_SECOND1;


  while(1)
  {

		
        Key_Scan();   //按键扫描

         onoff_Scan(); //按键开关
		
        cmd_uart_check();	

        if(time_tick_cnt> TICKS_PER_SECOND )
        {

			for(u8 kk=0;kk<5;kk++)
			{
	            if(house_id >= 5)
	                house_id = 1;
	            else
	                house_id++;

	            Ht1621Tab3[4]=house_id;  //房间号

				
	            switch(house_id)
	            {
	            case 1:
	                
	                mybuff[0] = device_work_data.para_type.house1_pm2_5>>8;
	                mybuff[1] = device_work_data.para_type.house1_pm2_5&0xff;
	                mybuff[2] = device_work_data.para_type.house1_co2>>8;
	                mybuff[3] = device_work_data.para_type.house1_co2&0xff;
					
	                break;
	            case 2:
	                mybuff[0] = device_work_data.para_type.house2_pm2_5>>8;
	                mybuff[1] = device_work_data.para_type.house2_pm2_5&0xff;
	                mybuff[2] = device_work_data.para_type.house2_co2>>8;
	                mybuff[3] = device_work_data.para_type.house2_co2&0xff;
	                break;
	            case 3:
	                mybuff[0] = device_work_data.para_type.house3_pm2_5>>8;
	                mybuff[1] = device_work_data.para_type.house3_pm2_5&0xff;
	                mybuff[2] = device_work_data.para_type.house3_co2>>8;
	                mybuff[3] = device_work_data.para_type.house3_co2&0xff;
	                break;
	            case 4:
	                mybuff[0] = device_work_data.para_type.house4_pm2_5>>8;
	                mybuff[1] = device_work_data.para_type.house4_pm2_5&0xff;
	                mybuff[2] = device_work_data.para_type.house4_co2>>8;
	                mybuff[3] = device_work_data.para_type.house4_co2&0xff;
	                break;
	            case 5:
	                mybuff[0] = device_work_data.para_type.house5_pm2_5>>8;
	                mybuff[1] = device_work_data.para_type.house5_pm2_5&0xff;
	                mybuff[2] = device_work_data.para_type.house5_co2>>8;
	                mybuff[3] = device_work_data.para_type.house5_co2&0xff;
	                break;

	            default:
	                break;
	            }         

				if(mybuff[0]==0&&mybuff[1]==0&&mybuff[2]==0&&mybuff[3]==0)
				{
					continue;
				}
				else
				{


					u16 tmp;

					tmp = (u16)mybuff[0]<<8;
					tmp += (u16)mybuff[1];
					
				    Ht1621Tab3[0]= tmp/1000;   //PM2.5 高位
		            Ht1621Tab3[1]= tmp%1000/100;  //PM2.5 
		            Ht1621Tab3[2]= tmp%1000%100/10;  //PM2.5 
		            Ht1621Tab3[3]= tmp%1000%100%10;  //PM2.5 低位

					tmp = (u16)mybuff[2]<<8;
					tmp += (u16)mybuff[3];
				    Ht1621Tab3[10]= tmp/1000;   //PM2.5 高位
		            Ht1621Tab3[9]= tmp%1000/100;  //PM2.5 
		            Ht1621Tab3[8]= tmp%1000%100/10;  //PM2.5 
		            Ht1621Tab3[7]= tmp%1000%100%10;  //PM2.5 低位
					break;
				}

			}

            
            time_tick_cnt = 0;
        }
    }
}