找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2466|回复: 10
收起左侧

STM32芯片按钮控制继电器程序,无法读取地址,求大神支持

[复制链接]
ID:493694 发表于 2019-3-20 15:08 | 显示全部楼层 |阅读模式
废话不说,直接上代码

我想做个,可以检测到按钮输入然后继电器输出的案列,但是目前无法读取地址,只能让Pin_13,Pin_14,Pin_15三个角继电器循环输出,请问下该怎么做检测按钮输入的?
  1. #include "stm32f10x.h"
  2. void delay(void) /* */
  3. {
  4.    int i,j;
  5.    for(i=2000;i>0;i--)
  6.   for(j=2000;j>0;j--);
  7. }
  8. void GPIO_Config(void)
  9. {
  10.    GPIO_InitTypeDef GPIO_InitStructure;
  11.    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  12.    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  13.    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  14.    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  15.    GPIO_Init(GPIOB , &GPIO_InitStructure);
  16.   
  17.   
  18.    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_12;
  19.    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  20.    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  21.    GPIO_Init(GPIOA , &GPIO_InitStructure);
  22. }
  23. int main(void)
  24. {
  25.    GPIO_Config();
  26.    SystemInit();
  27.   u8 ReadValue12;
  28.    while(1)
  29. {
  30.    ReadValue12= GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_12 ); // ??PB.5
  31.   if (ReadValue12=0)
  32.   {
  33.    GPIO_SetBits(GPIOB,GPIO_Pin_13 ); // ??PB.5
  34.    delay();
  35.   GPIO_ResetBits(GPIOB,GPIO_Pin_13 );// ??PB.5
  36.    delay();
  37.    GPIO_SetBits(GPIOB,GPIO_Pin_14 ); // ??PB.5
  38.    delay();
  39.   GPIO_ResetBits(GPIOB,GPIO_Pin_14 );// ??PB.5
  40.    delay();
  41.   GPIO_SetBits(GPIOB,GPIO_Pin_15 ); // ??PB.5
  42.    delay();
  43.   GPIO_ResetBits(GPIOB,GPIO_Pin_15 );// ??PB.5
  44.    delay();
  45.   }
  46. }
  47. }
复制代码



回复

使用道具 举报

ID:493694 发表于 2019-3-21 15:28 | 显示全部楼层
没有大神看到吗?
回复

使用道具 举报

ID:246251 发表于 2019-3-21 18:57 | 显示全部楼层
不懂你的意思
回复

使用道具 举报

ID:493694 发表于 2019-3-27 15:24 | 显示全部楼层

本人单片机小白,这是从网上找的程序实例,我手里的是STM32F103芯片,下载进去后确实可以看到13,14,15三个继电器动作,完全按照程序逻辑闪烁的,但是我想做个检测按钮输入的,然后在开始这段程序,让继电器动作应该怎么做??求大神详解
回复

使用道具 举报

ID:74252 发表于 2019-3-27 17:17 | 显示全部楼层
if语句里面有错, 判断应用“==”, 因该你的程序就可以了
回复

使用道具 举报

ID:246251 发表于 2019-3-28 09:49 | 显示全部楼层
xzj3203577 发表于 2019-3-27 15:24
本人单片机小白,这是从网上找的程序实例,我手里的是STM32F103芯片,下载进去后确实可以看到13,14,15三 ...

把if里的“=”换成“==”
回复

使用道具 举报

ID:493694 发表于 2019-3-28 17:25 | 显示全部楼层
雷雷制作 发表于 2019-3-27 17:17
if语句里面有错, 判断应用“==”, 因该你的程序就可以了

改成== 之后我试了所有的引脚,都不能进入循环里面了 ,那这个读取引脚输入的格式对不对?
回复

使用道具 举报

ID:500358 发表于 2019-3-29 10:00 | 显示全部楼层
12管脚配置为浮空输入明显不对
回复

使用道具 举报

ID:160500 发表于 2019-3-29 10:46 | 显示全部楼层
1、if语句判断条件表达式不对。2、外部按键如何接,IO配置是不同的,像你这样配置外部电路就要有上拉或下拉,没有的话是不行的
回复

使用道具 举报

ID:490426 发表于 2019-3-29 11:38 | 显示全部楼层
输入是没有模式的,你这是机械复制,完全没有理解gpio配置的内容。设置按键输入也需要不同的配置,与你的硬件电路图相关。你的为浮空输入,io口外接一个1K电阻到开关(开关并联电容0.1uf,因为你没有加延时消抖程序)然后到电源,再接一个3.3K电阻到地

评分

参与人数 1黑币 +2 收起 理由
xzj3203577 + 2 大佬,我是写PLC的,最近为了省成本用单片.

查看全部评分

回复

使用道具 举报

ID:160500 发表于 2019-3-29 12:20 | 显示全部楼层
还有一点你的程序里没有打开A口的时钟

评分

参与人数 1黑币 +2 收起 理由
xzj3203577 + 2 大神能指点下吗?

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表