main.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "stm32f10x.h"
  5. #include "stdio.h"
  6. #include "key.h"
  7. #include "usart.h"
  8. #include "drive_dht11.h"
  9. #include "bh1750.h"
  10. #include "CCS811.h"
  11. #include "CCS811_IIC.h"
  12. u8 humi=0;//湿度值
  13. u8 temp=0;//温度值
  14. u8 buffer[10]={0};
  15. u16 GzVal=0; //实际光照值
  16. char ShowBuf[16]={0};
  17. void TIMER3_Int_Init(u16 arr,u16 psc)
  18. {
  19. TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;
  20. NVIC_InitTypeDef NVIC_InitStructure;
  21. TIM_TimeBaseInitStrue.TIM_Period=arr;
  22. TIM_TimeBaseInitStrue.TIM_Prescaler=psc;
  23. TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up;
  24. TIM_TimeBaseInitStrue.TIM_ClockDivision=TIM_CounterMode_Up;
  25. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  26. TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStrue);
  27. TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//使能TIM3更新中断
  28. //中断优先级NVIC设置
  29. NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断
  30. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级
  31. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
  32. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
  33. NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
  34. TIM_Cmd(TIM3, ENABLE); //使能TIMx
  35. }
  36. u16 GetTimer=0;//采集时间计数器 我用P=U2/R 半波整流
  37. void TIM3_IRQHandler(void)//中断服务程序
  38. {
  39. if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)//SET为1
  40. {
  41. GetTimer++;//采集计数器
  42. TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除TIM3的更新中断标志
  43. }
  44. }
  45. u8 GetFlag=0;
  46. uint8_t sendBuff[16]={0};
  47. int main(void)
  48. {
  49. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  50. delay_init(); //延时函数初始化
  51. LED_Init(); //初始化与连接的硬件接口
  52. uart_init(115200);
  53. delay_ms(1000);
  54. TIMER3_Int_Init(10000,71);//定时器初始化 //10ms进一次中断
  55. BH1750_Init();
  56. while(1)
  57. {
  58. if(GetTimer>100)//1S
  59. {
  60. GetTimer=0;
  61. if(dht11_read_data(buffer) == 0)//读取温湿度
  62. {
  63. humi = buffer[0] + buffer[1] / 10;//取湿度值
  64. temp = buffer[2] + buffer[3] / 10;//取温度值
  65. }
  66. GzVal = Dispose();
  67. printf("wsdgzcheck_X%dH%dD%dZ\r\n",temp,humi,GzVal);//发送到上位机app
  68. }
  69. }
  70. }