打印
[STM32F1]

基于STM32F103C8T6的振动器控制继电器实现控制灯的亮灭

[复制链接]
楼主: lmq0v9
手机看帖
扫描二维码
随时随地手机跟帖
41
lmq0v9|  楼主 | 2023-3-28 14:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
20.如图配置

使用特权

评论回复
42
lmq0v9|  楼主 | 2023-3-28 14:24 | 只看该作者
21.打开gpio.h,配置GPIO的输出模式为推挽输出。

使用特权

评论回复
43
lmq0v9|  楼主 | 2023-3-28 14:25 | 只看该作者
22.配置GPIOA 的速度为10Mhz。

使用特权

评论回复
44
lmq0v9|  楼主 | 2023-3-28 14:25 | 只看该作者
23.将GPIOA的pin口调为3。

使用特权

评论回复
45
lmq0v9|  楼主 | 2023-3-28 14:28 | 只看该作者
24.将配置好的结构体进行编译。

使用特权

评论回复
46
lmq0v9|  楼主 | 2023-3-28 14:29 | 只看该作者
25.打开gpio.h文件,复制GPIOA的初始化函数。

使用特权

评论回复
47
lmq0v9|  楼主 | 2023-3-28 14:30 | 只看该作者
27.将初始化函数配置为GPIOA时钟及结构体地址。

使用特权

评论回复
48
lmq0v9|  楼主 | 2023-3-28 14:32 | 只看该作者
28.在shake.c文件中对震动传感器寄存器配置框架。

使用特权

评论回复
49
lmq0v9|  楼主 | 2023-3-28 14:34 | 只看该作者
29.z在外设文件FWLIB->rcc.c->rcc.h->调用ABP2周期时钟(复制)。

使用特权

评论回复
50
lmq0v9|  楼主 | 2023-3-28 14:42 | 只看该作者
30.将ABP2周期时钟粘贴在shake.c中。

使用特权

评论回复
51
lmq0v9|  楼主 | 2023-3-28 14:49 | 只看该作者
31.将GPIOA 时钟配置完成,编译。

使用特权

评论回复
52
lmq0v9|  楼主 | 2023-3-28 14:50 | 只看该作者
32.结构体初始化。

使用特权

评论回复
53
lmq0v9|  楼主 | 2023-3-28 15:16 | 只看该作者
33.配置好的结构体,注意将输出配置为下拉输出(IPD)

使用特权

评论回复
54
lmq0v9|  楼主 | 2023-3-28 15:27 | 只看该作者
在主函数中添加延时函数。

使用特权

评论回复
55
lmq0v9|  楼主 | 2023-3-28 15:30 | 只看该作者
如图,在主函数中将继电器电平拉高。

使用特权

评论回复
56
lmq0v9|  楼主 | 2023-3-28 15:30 | 只看该作者
配置震动传感器与继电器结合使用控制的灯的开关。

使用特权

评论回复
57
lmq0v9|  楼主 | 2023-3-28 15:41 | 只看该作者
将程序烧录进单片机中。

使用特权

评论回复
58
lmq0v9|  楼主 | 2023-3-28 15:43 | 只看该作者
四、编程代码

relay.c

#include "stm32f10x.h"
#include "relay.h"

void Relay_Init(void)
{
       
          GPIO_InitTypeDef relay_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;       //Êä³öPIN¿Ú
          relay_init.GPIO_Speed  =  GPIO_Speed_10MHz ;//Êä³öËÙ¶È
          
          GPIO_Init(GPIOA,&relay_init );  //GPIOA³õʼ»¯º¯Êý
          
       
}


使用特权

评论回复
59
lmq0v9|  楼主 | 2023-3-28 15:44 | 只看该作者
relay.h
#include "stm32f10x.h"

void Relay_Init(void);



使用特权

评论回复
60
lmq0v9|  楼主 | 2023-3-28 15:48 | 只看该作者
shake.c
#include "stm32f10x.h"
#include "shake.h"

void Shake_Init(void)
{
      GPIO_InitTypeDef shake_init;//½á¹¹Ìå³õʼ»¯
       
         // 1.ÅäÖÃGPIOAʱÖÓ
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
       
       
         // 2.½á¹¹ÌåÅäÖÃ
            shake_init.GPIO_Mode   =  GPIO_Mode_IPD;   //ÅäÖÃÊä³ö£¬ÏÂÀ­ÊäÈë
            shake_init.GPIO_Pin    =  GPIO_Pin_2;      //ÅäÖÃpin¿Ú
            shake_init.GPIO_Speed  =  GPIO_Speed_10MHz;//ÅäÖÃËÙ¶È
       
            GPIO_Init(GPIOA,&shake_init);              //GPIOAʱÖÓ³õʼ»¯
            

}




使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则