小实验--继电器定时开闭
继电器定时开闭
1.实验目的
继电器500ms闭合,再500ms断开,如此循环。
2.硬件清单
- 继电器
- STM32开发版
- ST-Link
3.硬件连接
STM32 | 继电器 |
---|---|
PB7 | I/O |
3V3 | VCC |
GND | GND |
4.代码
小技巧
:给保存继电器代码的文件夹命名时,一般不命名继电器的英文名字,而是命名为继电器要驱动的电路名字,比如要驱动高功率喇叭,就命名为喇叭了英文名字。
4.1alarm.c
#include "alarm.h"
#include "sys.h"void alarm_init(void)
{__HAL_RCC_GPIOB_CLK_ENABLE(); //使能GPIOB时钟GPIO_InitTypeDef gpio_initstruct; //初始化GPIO函数中的结构体参数 gpio_initstruct.Mode =GPIO_MODE_OUTPUT_PP ; //推挽输出gpio_initstruct.Pin = GPIO_PIN_7; //引脚7gpio_initstruct.Pull = GPIO_PULLUP; //上拉gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH; //高速HAL_GPIO_Init(GPIOB,&gpio_initstruct);alarm_off();
}
//打开继电器函数
void alarm_on(void)
{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET); //拉低PB7引脚打开继电器
}
//关闭继电器函数
void alarm_off(void)
{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET); //拉高PB7引脚关闭继电器
}
4.2alarm.h
#ifndef __ALARM_H__
#define __ALARM_H__void alarm_init(void);
void alarm_on(void);
void alarm_off(void);#endif
4.3main.c
#include "sys.h"
#include "uart1.h"
#include "delay.h"
#include "alarm.h"int main(void)
{HAL_Init(); /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */alarm_init();while(1){ alarm_on();delay_ms(500);alarm_off();delay_ms(500);}
}
这个代码和点亮LED的代码一模一样,就是修改了引脚,详见STM32小实验1–点亮led