1.代码控制开关口,单片机-继电器-模块(是否打开)
2.告诉单片机把灯点亮
int main//开始工作
{
Relay_Init();//继电器IO口初始化
while(1)//循环
{
GPIO_SetBits(GPIO_Jidianqi,GPIO_Pin_GuangDeng);//开灯
}
}
3.继电器控制灯的开关
在之前的项目文件中添加jidianqi.c和jidianqi.h文件,然后加入到项目工程文件的USER文件夹里
//在led.c里定义函数
#include"jidainqi.h"
#include"stm32f10x.h"
void jidianqi_Init(void)
{
}
//在led.h
#include"stm32f10x.h"
void jidianqi_Init(void);//函数声明
//在main.c函数调用
#include "stm32f10x.h"
#include "led.h"
void delay(uint16_t time)
{
uint16_t i= 0;
while(time--)
{
i=12000;
while(i--);
}
}
int main()
{
LED_Init();
jidianqi_Init();
while(1)
{
}
}
在jidianqi.c文件
//引脚是PA3,使能GPIOA时钟,GPIOA3结构体配置,初始化
//使能时钟:查看参考手册系统构架GPIO都挂在APB2上,在rcc.h文件里找到apb2的外设时钟void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);第一个参数GPIOA找到rcc文件中498行GPIO的标识RCC_APB2Periph_GPIOA,第二个参数FunctionalState NewState点击FunctionalState右击出现go to xxx选择第一个到typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;我们要使能即打开即第二个参数选择ENABLE
//配置结构体:在gpio.h文件夹中101行找到结构体GPIO_InitTypeDef;然后在使能时钟前定义GPIO_InitTypeDef jdq_Init;此时可以配置mode,pin,spee分别推挽输出(在gpio.h文件里的结构体那右击go to xxx 找到推挽输出),3脚(gpio.h文件里130行GPIO_Pin_3),同mode选10MHz
//在gpio.h文件里找到void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);对应项目的void GPIO_Init(GPIOA, &jdq_Init);
#include "jidianqi.h"
#include "stm32f10x.h"
void jdq_Init(void)
{
GPIO_InitTypeDef jdq_init ;
//1.使能GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
//2.GPIOA3结构体配置
Relay_init.GPIO_Mode = GPIO_Mode_Out_PP;
Relay_init.GPIO_Pin = GPIO_Pin_3;
Relay_init.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init( GPIOA, &jdq_init );
}
配置完之后在main.c文件添加#include "jidianqi.h"但是这个jidianqi.h文件,去添加头文件路径(魔术棒c/c++include paths里添加jidianqi文件夹)
最后点亮灯光,把继电器PA3电频拉低打开开关,在gpio.h文件找到resetbits函数