本帖最后由 ningling_21 于 2019-7-11 20:13 编辑
天气好热,刚刚看到活动却发现马上就要结束了,于是抓紧时间参加一个。
此 检测器采用的芯片是STM32F103C8T6,传感器是PMS5003,还有温湿度一体传感器SHT20(未使用),显示屏12864。
虽然这款芯片引脚不算太多但资源丰富,主频72MHZ,128K-FLASH,20KRAM,ADC,DMA,多达37个快速I/O口,7个定时器,9个通信接口,USART,CAN,USB,IIC,一个都不少。
int main(void)
{
uint8_t l_u8_flag_led =0;
uint16_t i=0;
uint16_t u16_temp =0;
uint16_t u16_humi =0;
/*初始化gpio,*/
Sys_gpio_init();
RESET:
if(flag_sys_off_stat ==0x5a)
{
//关机并检测按键
Init_lcd(0x22);
GPIO_SetBits(GPIOB, GPIO_Pin_5) ; //LCD电源
GPIO_ResetBits(GPIOB, GPIO_Pin_1) ; //传感器低功耗控制,低电平休眠
GPIO_SetBits(GPIOA, GPIO_Pin_1) ; //RUN
while(1)
{
key_in_Stat=GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_11);//按键输入
if( key_in_Stat<1)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_5) ;//LCD电源
GPIO_ResetBits(GPIOB, GPIO_Pin_0) ;//背光
GPIO_SetBits(GPIOB, GPIO_Pin_1) ;//传感器低功耗控制,低电平休眠
GPIO_SetBits(GPIOB, GPIO_Pin_12); //CS =1;
break;
}
}
}
/* USART1 config */
delay_init();
//------------------------------------------------------------------
Init_lcd(0x24); //LCD对比度调节
SET_screen();//显示图片,欢迎画面
USART2_Config(); //串口2
NVIC_Configuration();
/* enable adc1 and config adc1 to dma mode */
//------------------------------------------------------------------
Init_data();
for(i=0;i<50000;i++)
{
u16_pm25=100;
while(u16_pm25--);
}
clr_screen();
for(i=0;i<5000;i++);
//------------------------------------------------------------------
//------------------------------------------------------------------
l32_run_cnt=10000;
while(l32_run_cnt--);
Disp_lcd_init();
//------------------------------------------------------------------
Exti_init();
Tim2_init(); //
l32_run_cnt=0;
u16_pm25=0;
由于手头没有温湿度传感器所以屏幕没显示当前的温度和湿度,如果换上带温湿度一体的PM2.5传感器则可以显示。
祝ST的产品线做的越来越广,芯片资源做的越来越丰富,ST发展芝麻开花节节高!
|