【STM32单片机-库函数】继电器——relay
实验演示:
- 工作电压5V
- 模块I/O接STM32的PG6引脚、开漏输出
relay.h
#ifndef __RELAY_H
#define __RELAY_H/************************************************************
**> File Name: relay.h
**> Description: RELAY GPIO - hardware driver
**> Author: xinso
**> blog: xinso.blog.csdn.net
**> Created Time: 2021.04.06
**--------------------------------------------------------
**> 本程序只供学习使用,未经作者许可,不得用于其它任何用途
*************************************************************/#ifdef __cplusplus
extern "c"{
#endif#include "sys.h"/* 直接操作寄存器的方法控制IO */
#define digitalHi(p,i) {p->BSRR=i;} //输出高电平
#define digitalLo(p,i) {p->BRR=i;} //输出低电平
#define digitalToggle(p,i) {p->ODR ^=i;} //输出反转状态/* 继电器控制引脚定义*/
#define RELAY1_GPIO_PORT GPIOG
#define RELAY1_GPIO_CLK RCC_APB2Periph_GPIOG
#define RELAY1_GPIO_PIN GPIO_Pin_6 /* 我买的继电器模块是低电平有效的*/
#define RELAY1_ON digitalLo(RELAY1_GPIO_PORT,RELAY1_GPIO_PIN)
#define RELAY1_OFF digitalHi(RELAY1_GPIO_PORT,RELAY1_GPIO_PIN)void RELAY_GPIO_Init(void); //初始化#ifdef __cplusplus
}
#endif#endif /* __RELAY_H */
relay.c
#include "relay.h"/************************************************************
**> File Name: relay.c
**> Description: RELAY GPIO - hardware driver
**> Author: xinso
**> blog: xinso.blog.csdn.net
**> Created Time: 2021.04.06
**--------------------------------------------------------
**> 本程序只供学习使用,未经作者许可,不得用于其它任何用途
*************************************************************/void RELAY_GPIO_Init(void)
{ GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RELAY1_GPIO_CLK , ENABLE); //使能GPIO端口时钟GPIO_InitStructure.GPIO_Pin = RELAY1_GPIO_PIN ; //RELAY1 GPIO GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //不行的话,改为推挽输出: GPIO_Mode_Out_PPGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为50MHzGPIO_Init(RELAY1_GPIO_PORT, &GPIO_InitStructure);RELAY1_OFF; //关闭继电器控制
}
谢谢观看,有问题需要请教的,请加入STM32学习交流群(QQ群号:470804974),本人QQ号2974278195有问题可添加看到必回。
附:本实验项目采用继电器模块工作电压5V,吸合电流约70mA每路,带继电器状态指示灯;I/O信号输入直接与单片机IO口或数字电路连接,输入高电平继电器吸合,输入低电平继电器释放; 全贴片元件,最合理驱动电路设计,采用8050三极管驱动继电器动作。
本人利用过正点原子-精英板(STM32F103)去控制一个5v的继电器模块时,用开漏输出才能正常控制继电器的工作状态,而使用通用推挽输出模式继电器都是不工作没反应的(正常来说继电器都是用推挽输出驱动I/O的),想问一下,为什么精英板有时候不能用推挽输出模式驱动5V继电器模块?
【STM32单片机-库函数】继电器——relay相关推荐
- 【STM32单片机】继电器控制电磁阀与行程(限位)开关的应用
[STM32单片机]继电器控制电磁阀与行程(限位)开关的应用 STM32单片机高电平为3.3V,而电磁阀的工作电压常为12V/24V,这意味着需要借助继电器控制电磁阀.继电器的本质是通过单片机引脚高低 ...
- stm32单片机屏幕一直闪_STM32使用HAL库函数点亮OLED
OLED屏幕应用十分广泛,我们可以使用STM32单片机对其进行控制,使其显示我们需要的各种数字.字母.汉字.图画等.我们此次使用下图这款非常普遍的0.96寸OLED液晶屏.此款OLED屏采用IIC的通 ...
- B45 - 基于STM32单片机的家庭防火防盗系统的设计
文章目录 设计要求 实物 人脸识别模块的调试 传感器采集与显示 模块设计 温湿度模块 烟雾浓度MQ2 GSM模块 人脸识别模块 语音报警模块 资源占用 源程序 主程序 处理逻辑 AD/DA转换检测烟雾 ...
- 【Proteus仿真】【STM32单片机】火灾监测报警系统设计
文章目录 一.功能简介 二.软件设计 三.实验现象 联系作者 一.功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块.按键模块.LED和蜂鸣器.继电器直流电机模 ...
- (转)jLink使用ITM机制实现调试stm32单片机
----------------------------------------------------------------------------------------------- 作者:p ...
- stm32单片机屏幕一直闪_stm32实现LED灯的闪烁
stm32单片机设计比较复杂,所以,对于外设的控制就相对于51单片机来说,就复杂很多.那么如何用stm32单片机点亮LED呢?通过一下几个步骤,就可以实现LED的闪烁.这里使用的stm32型号是stm ...
- stm32单片机实现多个闹钟_如何学习单片机:单片机都是相通的,一通百通
单片机是一种可编程的器件,现在所见到的电子产品中几乎都是以单片机为核心的,根据不同的功能需求,搭建不同的电路,从8位的单片机到32位的单片机,甚至比较高大上的ARM和DSP都可以看成是高级一点的单片机 ...
- 5加载stm32 keil_快速入门STM32单片机-软件篇
关于这个STM32的编程开发环境Keil,网上有太多相关的资源了,而且大都讲解的非常详细.所以本篇文章无意于深入细节,只会提供我学习时候的一些体会,帮助你更好的掌握相关知识. 1.标准外设库(Stan ...
- semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机
使用ITM机制实现调试stm32单片机,实现printf与scanf. ITM简介 ITM机制是一种调试机制,是新一代调试方式,在这之前,有一种比较出名的调试方式,称为半主机(semihosting) ...
最新文章
- appium-java自动化框架设计学习
- leetcode算法题--Minimum Depth of Binary Tree
- 已知旋转矩阵求角度_如何推导旋转矩阵
- 技术人员职业生涯的红色警报
- 实战 | 后端日志的前世今生
- Android中SQLiteOpenHelper类的onUpgrade方法浅谈
- Ubuntu 10.04 is coming
- mysql数据控制语言_Mysql数据控制语言DCL(Data Control Language)
- 安卓股票悬浮窗_股票悬浮窗的安卓应用
- Python处理Excel数据的方法
- 雅马哈推出可以播放黑胶唱片和流行音乐的无线唱盘
- PHP 生成带文字图片
- dell系统重装后无法进入系统_戴尔装win7后无法进入系统怎么办?戴尔装win7后进不了系统解决方法...
- 如何挑选机械键盘?高性价比的机械键盘推荐
- 零基础如何学好Photoshop
- 对于Java的MyBatis的入门
- 书记员计算机操作基础知识考试,书记员打字考试怎么考?有哪些形式?
- python sphinx_Python Sphinx使用踩坑记录
- ESP32开发环境的搭建和 ESP-IDF支持以下调试方法
- 自定义View基础之——canvas,paint的基本用法