当前位置: 首页 > article >正文

STM32-笔记7-继电器定时开闭

1、复制02项目,重命名08-继电器定时开闭

打开项目工程

在\Drivers\BSP\该路径下,新建alarm文件夹,该文件夹下里面包含alarm.c和alarm.h文件

加载进该项目中

为什么这里使用的是

 这个单词,而不是继电器(relay)的单词?

        因为:在很多项目中,继电器是要接其他固件的,比如在接下来的项目中,继电器是要接警报器的所以,不需要给与继电器本身的名字。

2、把alarm.c文件打开,把头文件更改为 #include alarm.h

编译程序

打开alarm.h文件

3、实现继电器定时开关闭(无返回值版)

alarm.c

#include "alarm.h"
#include "sys.h"//关于时钟的头文件

//初始化GPIO函数
void alarm_init(void)
{
    GPIO_InitTypeDef gpio_initstruct;//定义一个结构体gpio_initstruct
    //打开时钟
    __HAL_RCC_GPIOB_CLK_ENABLE();
    //调用GPIO初始化函数
    gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP;//结构体函数的四种类型,引脚模式、引脚、引脚上拉下拉、引脚速度
    gpio_initstruct.Pin = GPIO_PIN_7;
    gpio_initstruct.Pull = GPIO_PULLUP;
    gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;
    
    HAL_GPIO_Init(GPIOB,&gpio_initstruct);
    //关闭led
    alarm_OFF();
}
//点亮LED1的函数
void alarm_ON(void)
{
    //把GPIO口拉低,给一个低电平,点亮LED
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET);
}
//熄灭LED1的函数
void alarm_OFF(void)
{
     //把GPIO口拉高,给一个高电平,点亮LED
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET);
}

alarm.h

#ifndef __ALARM_H__
#define __ALARM_H__

void alarm_init(void);
void alarm_ON(void);
void alarm_OFF(void);


#endif

main.c

#include "sys.h"
#include "delay.h"
#include "led.h"
#include "alarm.h"

int main(void)
{
    HAL_Init();                         /* 初始化HAL库 */
    stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
    
    led_init();//初始化led灯
    alarm_init();

    while(1)
    { 
        alarm_ON();
        delay_ms(500);
        alarm_OFF();
        delay_ms(500);
    }
}
4、实现继电器定时开关闭(有返回值版)

alarm.c

#include "alarm.h"
#include "sys.h"//关于时钟的头文件

//初始化GPIO函数
void alarm_init(void)
{
    GPIO_InitTypeDef gpio_initstruct;//定义一个结构体gpio_initstruct
    //打开时钟
    __HAL_RCC_GPIOB_CLK_ENABLE();
    //调用GPIO初始化函数
    gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP;//结构体函数的四种类型,引脚模式、引脚、引脚上拉下拉、引脚速度
    gpio_initstruct.Pin = GPIO_PIN_7;
    gpio_initstruct.Pull = GPIO_PULLUP;
    gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;
    
    HAL_GPIO_Init(GPIOB,&gpio_initstruct);
    //关闭led
    alarm_OFF();
}
//点亮LED1的函数
void alarm_ON(void)
{
    //把GPIO口拉低,给一个低电平,点亮LED
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET);
}
//熄灭LED1的函数
void alarm_OFF(void)
{
     //把GPIO口拉高,给一个高电平,点亮LED
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET);
}
uint8_t alarm_status_get(void)
{
    return (uint8_t)HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7);//返回这个引脚的状态//为什么使用强转
    //因为:HAL_GPIO_ReadPin();函数使用的是GPIO_PinState;结构体类型,而这个函数使用的是uint8_t类型
}

alarm.h

#ifndef __ALARM_H__
#define __ALARM_H__

#include "stdint.h"

#define ALARM_STATUS_ON 0  //继电器低电平触发
#define ALARM_STATUS_OFF 1

void alarm_init(void);
void alarm_ON(void);
void alarm_OFF(void);
uint8_t alarm_status_get(void);

#endif


http://www.kler.cn/a/447426.html

相关文章:

  • 【Linux系统编程】:信号(2)——信号的产生
  • 【WRF教程第3.1期】预处理系统 WPS 详解:以4.5版本为例
  • 【D3.js in Action 3 精译_046】DIY 实战:在 Observable 平台利用饼图布局函数实现 D3 多个环形图的绘制
  • springboot 配置Kafka 关闭自启动连接
  • 深入了解Bootstrap:打造响应式网站的利器
  • web3跨链桥协议-Nomad
  • 雅思真题短语梳理(八)
  • 常用的JVM启动参数有哪些?
  • 电子发票汇总改名,批量处理电子发票问题
  • ChatGPT接口测试用例生成的流程
  • windows安装Elasticsearch及增删改查操作
  • 基于SpringBoot+Mysql实现的在线音乐系统平台功能实现一
  • postman测试导入文件
  • 【ETCD】【实操篇(四)】etcd常见问题快问快答FAQ
  • 2.5 io_uring
  • 黑马Java面试教程_P7_常见集合_P4_HashMap
  • homebrew,gem,cocoapod 换源,以及安装依赖
  • uniapp实现手写签名,并在app中将其转为base64格式的图片
  • springboot中的AOP以及面向切面编程思想
  • Vue.js前端框架教程8:Vue消息提示ElMessage和ElMessageBox
  • Win/Mac 如何实现测试 IP 和端口
  • ​在VMware虚拟机上设置Ubuntu与主机共享文件夹​
  • ubuntu 开机自动mount 的方法
  • 行情接入手册
  • 信息安全管理与评估赛题第6套
  • 【初阶数据结构与算法】八大排序算法之选择排序(直接选择排序、堆排)