/* _______ ______ _____ ____ ___ __ _ * |_| |__| |___| |____| |_____| |______| |_______| |________| */ 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(); //配置中断优先级 }
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; } } }