ARM day8作业

1.自己设置温度湿度阈值,当温度过高时,打开风扇,蜂鸣器报警

2.当湿度比较高时,打开LED1灯,蜂鸣器报警

//蜂鸣器

bz.h

#ifndef __BZ_H__
#define __BZ_H__

#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"

void all_bz_init();
void bz_on();
void bz_off();

#endif

bz.c

#include "bz.h"

//PB6
void all_bz_init()
{
    //GPIOB时钟使能
    RCC->MP_AHB4ENSETR  |= (0x1<<1);

    //PB6设置为输出
    GPIOB->MODER &= (~(0X3<<12));
    GPIOB->MODER |= (0X1<<12);

    //PB6设置为推挽输出
    GPIOB->OTYPER &= (~(0X1<<6));

    //PB6设置为低速输出
    GPIOB->OSPEEDR &= (~(0X3<<12));

    //PB6无上拉下拉电阻
    GPIOB->PUPDR &= (~(0X3<<12));

    //默认输出低电平
    GPIOB->ODR &= (~(0X1<<6));
}

void bz_on()
{
    GPIOB->ODR |= (0X1<<6);
}

void bz_off()
{
    GPIOB->ODR &= (~(0X1<<6));
}

 //风扇 

fan.h

#ifndef __FAN_H__
#define __FAN_H__

#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"

void all_fan_init();
void fan_on();
void fan_off();

#endif

fan.c

#include "fan.h"

//风扇 PE9
void all_fan_init()
{
    //GPIOE时钟使能
    RCC->MP_AHB4ENSETR  |= (0x1<<4);

    //PE9设置为输出
    GPIOE->MODER &= (~(0X3<<18));
    GPIOE->MODER |= (0X1<<18);

    //PE9设置为推挽输出
    GPIOE->OTYPER &= (~(0X1<<9));

    //PE9设置为低速输出
    GPIOE->OSPEEDR &= (~(0X3<<9));

    //PE9无上拉下拉电阻
    GPIOE->PUPDR &= (~(0X3<<18));

    //默认输出低电平
    GPIOE->ODR &= (~(0X1<<9));
}

void fan_on()
{
    GPIOE->ODR |= (0X1<<9);
}

void fan_off()
{
    GPIOE->ODR &= (~(0X1<<9));
}

 main.c

#include"si7006.h"
#include"led.h"
#include"fan.h"
#include"bz.h"
//PE9 fan   PB6 bz
int main()
{

    //i2c初始化
    i2c_init();
    //si7006初始化
    si7006_init();
    //led,fan,bz初始化
    all_bz_init();
    all_led_init();
    all_fan_init();

    short tem;
    unsigned int short hum;
    while(1)
    {
        //读取温度数据
        tem=si7006_read_tem();
        //读取湿度数据
        hum=si7006_read_hum();
        //计算温湿度数据
        hum=125*hum/65536-6;
        tem=175.72*tem/65536-46.85;
        printf("hum:%d\n",hum);
        printf("tem:%d\n",tem);
        //设置阈值
        if(hum<=55)
        {
            LED1_OFF();
        }
        else
        {
            LED1_ON();   
        }
        if(tem>=25)
        {
            fan_on();
            bz_on();
        }
        else{
            fan_off();
            bz_off();
        }
        //串口打印
        delay(1000);
        printf("hum:%d\n",hum);
        printf("tem:%d\n",tem);

    }
    return 0;
}

 现象视频

 

VID_20240325_195625

相关推荐

  1. ARMday8

    2024-03-29 11:36:04       33 阅读
  2. <span style='color:red;'>ARMday</span>7

    ARMday7

    2024-03-29 11:36:04      55 阅读
  3. <span style='color:red;'>ARMday</span>9

    ARMday9

    2024-03-29 11:36:04      58 阅读
  4. ARMday6

    2024-03-29 11:36:04       40 阅读
  5. <span style='color:red;'>ARMday</span>7

    ARMday7

    2024-03-29 11:36:04      43 阅读
  6. ARMday5

    2024-03-29 11:36:04       45 阅读
  7. ARMday1

    2024-03-29 11:36:04       38 阅读
  8. ARMday2

    2024-03-29 11:36:04       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-29 11:36:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-29 11:36:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-29 11:36:04       82 阅读
  4. Python语言-面向对象

    2024-03-29 11:36:04       91 阅读

热门阅读

  1. 完整的FPGA设计流程包括哪些?

    2024-03-29 11:36:04       50 阅读
  2. 微信小程序预先加载服务器的图片

    2024-03-29 11:36:04       37 阅读
  3. 十一、Spring源码学习之registerListeners方法

    2024-03-29 11:36:04       31 阅读
  4. FFMPEG对于处理rtp流出现马赛克问题处理

    2024-03-29 11:36:04       43 阅读
  5. Linux curl 类似 postman 直接发送 get/post 请求

    2024-03-29 11:36:04       41 阅读
  6. 大数据导论-大数据分析——沐雨先生

    2024-03-29 11:36:04       38 阅读
  7. 一些常见的zookeeper问题和答案

    2024-03-29 11:36:04       48 阅读
  8. Pytorch:torchvision.transforms.Compose

    2024-03-29 11:36:04       41 阅读
  9. 公网部署ctfd+ctfd_whale问题解决

    2024-03-29 11:36:04       38 阅读
  10. 关于docker-Engine使用的存储驱动devicemapper的常识

    2024-03-29 11:36:04       45 阅读
  11. git2consul+consul+gitlab连接

    2024-03-29 11:36:04       42 阅读
  12. element el-table表格默认勾选toggleRowSelection失效问题

    2024-03-29 11:36:04       41 阅读
  13. Spring Boot 多模块项目跨包自动注入的方法

    2024-03-29 11:36:04       42 阅读
  14. rust - 常用时间处理

    2024-03-29 11:36:04       48 阅读