找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2865|回復(fù): 10
收起左側(cè)

STM32芯片按鈕控制繼電器程序,無法讀取地址,求大神支持

[復(fù)制鏈接]
ID:493694 發(fā)表于 2019-3-20 15:08 | 顯示全部樓層 |閱讀模式
廢話不說,直接上代碼

我想做個,可以檢測到按鈕輸入然后繼電器輸出的案列,但是目前無法讀取地址,只能讓Pin_13,Pin_14,Pin_15三個角繼電器循環(huán)輸出,請問下該怎么做檢測按鈕輸入的?
  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. }
復(fù)制代碼



回復(fù)

使用道具 舉報

ID:493694 發(fā)表于 2019-3-21 15:28 | 顯示全部樓層
沒有大神看到嗎?
回復(fù)

使用道具 舉報

ID:246251 發(fā)表于 2019-3-21 18:57 | 顯示全部樓層
不懂你的意思
回復(fù)

使用道具 舉報

ID:493694 發(fā)表于 2019-3-27 15:24 | 顯示全部樓層

本人單片機小白,這是從網(wǎng)上找的程序?qū)嵗沂掷锏氖荢TM32F103芯片,下載進去后確實可以看到13,14,15三個繼電器動作,完全按照程序邏輯閃爍的,但是我想做個檢測按鈕輸入的,然后在開始這段程序,讓繼電器動作應(yīng)該怎么做??求大神詳解
回復(fù)

使用道具 舉報

ID:74252 發(fā)表于 2019-3-27 17:17 | 顯示全部樓層
if語句里面有錯, 判斷應(yīng)用“==”, 因該你的程序就可以了
回復(fù)

使用道具 舉報

ID:246251 發(fā)表于 2019-3-28 09:49 | 顯示全部樓層
xzj3203577 發(fā)表于 2019-3-27 15:24
本人單片機小白,這是從網(wǎng)上找的程序?qū)嵗沂掷锏氖荢TM32F103芯片,下載進去后確實可以看到13,14,15三 ...

把if里的“=”換成“==”
回復(fù)

使用道具 舉報

ID:493694 發(fā)表于 2019-3-28 17:25 | 顯示全部樓層
雷雷制作 發(fā)表于 2019-3-27 17:17
if語句里面有錯, 判斷應(yīng)用“==”, 因該你的程序就可以了

改成== 之后我試了所有的引腳,都不能進入循環(huán)里面了 ,那這個讀取引腳輸入的格式對不對?
回復(fù)

使用道具 舉報

ID:500358 發(fā)表于 2019-3-29 10:00 | 顯示全部樓層
12管腳配置為浮空輸入明顯不對
回復(fù)

使用道具 舉報

ID:160500 發(fā)表于 2019-3-29 10:46 | 顯示全部樓層
1、if語句判斷條件表達式不對。2、外部按鍵如何接,IO配置是不同的,像你這樣配置外部電路就要有上拉或下拉,沒有的話是不行的
回復(fù)

使用道具 舉報

ID:490426 發(fā)表于 2019-3-29 11:38 | 顯示全部樓層
輸入是沒有模式的,你這是機械復(fù)制,完全沒有理解gpio配置的內(nèi)容。設(shè)置按鍵輸入也需要不同的配置,與你的硬件電路圖相關(guān)。你的為浮空輸入,io口外接一個1K電阻到開關(guān)(開關(guān)并聯(lián)電容0.1uf,因為你沒有加延時消抖程序)然后到電源,再接一個3.3K電阻到地

評分

參與人數(shù) 1黑幣 +2 收起 理由
xzj3203577 + 2 大佬,我是寫PLC的,最近為了省成本用單片.

查看全部評分

回復(fù)

使用道具 舉報

ID:160500 發(fā)表于 2019-3-29 12:20 | 顯示全部樓層
還有一點你的程序里沒有打開A口的時鐘

評分

參與人數(shù) 1黑幣 +2 收起 理由
xzj3203577 + 2 大神能指點下嗎?

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表