锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

STM32驱动继电器 STM32F103RCT6基于寄存器和库函数驱动IO口

时间:2023-06-26 17:37:00 7h系列继电器光耦管直接驱动继电器固态继电器模块4450系列固态继电器

STM32驱动继电器 STM32F103RCT6基于寄存器和库函数驱动IO口

  • 继电器描述
    • 继电器参数测试
  • STM32F控制103寄存器版本IO口
    • STM32控制继电器-寄存器版本
    • STM32控制继电器-库函数版本
  • 总结

继电器描述

在这里插入图片描述

点击图片购买

继电器是一种小电压控制大电压装置,输出端是一个没有输出电压的开关,具体的接线方式取决于如何使用开关;
继电器的具体工作原理可参考前一篇文章51单片机驱动继电器模块点灯

继电器参数测试

以我们自己商店的继电器模块为例。当继电器触发电压高于一定值时,继电器会被触发,触发灯亮起
这里实测时1.3V实际触发电压最好在2左右V以上,5.5V以下;

当触发信号低于一定值时,继电器将恢复,不会被触发,触发灯将熄灭,这里测量1V,但实际触发信号建议小于0.5V;

STM32F控制103寄存器版本IO口

1:程序现象

信号控制引脚是STM32F103RCT6的PA11引脚;

STM32控制继电器-寄存器版本

1.由STM32F10系列参考手册,GPIO时钟使能是由的APB2控制外设;

从上图可以看出,只需要把手IOPA1.其他零可以打开GPIOA的使能,

2.然后在这里选择配置端口作为通用推拉输出,速度为50MHZ;

从图中可以看出CNF11配置为00,MODE11配置为11,其他配置为0;

3.控制GPIOA11口输出;

ODR11是输出高电平;

4.代码演示,

#include "stm32f10x.h" // Device header #include "Delay.h"  int main(void) { 
          RCC->APB2ENR = 0x00000004;     //打开GPIOA使能  GPIOA->CRH = 0x00003000;       //配置PA11引脚通用推拉输出模式  while(1)  { 
          GPIOA->ODR = 0x00000800;       //PA11输出高电平  Delay_ms(1000);  GPIOA->ODR = 0x00000000;       //PA11输出低电平  Delay_ms(1000);  } }   

STM32控制继电器-库函数版本

库函数已经包装好了寄存器,我们可以直接使用;
主要代码:

#include "stm32f10x.h" // Device header #include "Delay.h"  int main(void) { 
          GPIO_InitTypeDef GPIO_InitStructure;                        //定义结构体     RCC_APB2PeriphClockCmd
       
        (RCC_APB2Periph_GPIOA
        ,ENABLE
        )
        ; 
        //配置GPIOA外设时钟 GPIO_InitStructure
        .GPIO_Mode 
        = GPIO_Mode_Out_PP
        ; 
        //配置GPIOA为通用推挽输出 GPIO_InitStructure
        .GPIO_Pin 
        = GPIO_Pin_11
        ; 
        //配置对应的端口 GPIO_InitStructure
        .GPIO_Speed 
        = GPIO_Speed_50MHz
        ; 
        //配置好速度 
        GPIO_Init
        (GPIOA
        ,
        &GPIO_InitStructure
        )
        ; 
        //传递结构体的位置 
        while
        (
        1
        ) 
        { 
          
        GPIO_SetBits
        (GPIOA
        ,GPIO_Pin_11
        )
        ; 
        //端口设置为高电平 
        Delay_ms
        (
        1000
        )
        ; 
        //延时1s 
        GPIO_ResetBits
        (GPIOA
        ,GPIO_Pin_11
        )
        ; 
        //端口设置为低电平 
        Delay_ms
        (
        1000
        )
        ; 
        //延时1s 
        } 
        } 
       

总结

1.寄存器版本和库函数版本代码现象是一样的;
2.IO口模式要配置为推挽输出模式,开漏输出模式无法驱动继电器;
3.本次使用的是5V继电器版本,供电需要用到5V,如果
开发板没有5V 输入引脚,可以接额外电源供电,但是要把供电电源的地和单片机的地连起来;

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章