久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2579|回復(fù): 18
打印 上一主題 下一主題
收起左側(cè)

已解決:謝謝各位師傅,請(qǐng)教STM32按鍵輸入程序問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
你們好,各位老師,在之前買(mǎi)的普中開(kāi)發(fā)板A7,將之前的C51換成STM32f103cb模塊,教程里面按鍵輸入程序都和原來(lái)不一樣了,我沒(méi)有按著教程那樣寫(xiě)程序,教程都是一個(gè)按鍵控制一個(gè)燈,我的想法是兩個(gè)按鍵控制多個(gè)燈,結(jié)果是無(wú)法控制,沒(méi)有反應(yīng),這個(gè)在C51很正常的程序,這里失靈了,比較過(guò)兩種開(kāi)發(fā)板,就是以前的開(kāi)發(fā)板外接IO口有上拉電阻,不過(guò)我在網(wǎng)上找的是沒(méi)有影響,請(qǐng)教各位師傅,不知道是否沒(méi)有影響,如果沒(méi)有影響,是程序有問(wèn)題嗎?同時(shí)使用過(guò),硬件仿真,里面的變量數(shù)值不變,硬件仿真不是很會(huì)用,沒(méi)有觀察到按鍵輸入IO口的波形,

51hei瀏覽器截圖20220819231202.png (19.49 KB, 下載次數(shù): 81)

51hei瀏覽器截圖20220819231202.png

51hei瀏覽器截圖20220819231232.png (30.28 KB, 下載次數(shù): 78)

51hei瀏覽器截圖20220819231232.png

1.jpg (4.61 MB, 下載次數(shù): 161)

1.jpg

4按鍵輸入.7z

211.08 KB, 下載次數(shù): 15

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:451718 發(fā)表于 2022-8-20 13:05 | 只看該作者
兩個(gè)按鍵控制8個(gè)燈?  2個(gè)按鍵,只有4種狀態(tài)吧,沒(méi)弄明白你是如何實(shí)現(xiàn)的。 如果不是通過(guò)狀態(tài)來(lái)控制,那就是通過(guò)按鍵觸發(fā)的時(shí)長(zhǎng)來(lái)控制,51的速度和 STM32的速度是完全不同的,如果用delay來(lái)約束,恐怕不行。
回復(fù)

使用道具 舉報(bào)

板凳
ID:883242 發(fā)表于 2022-8-20 15:57 | 只看該作者
難道是delay()時(shí)間不對(duì)?
回復(fù)

使用道具 舉報(bào)

地板
ID:731755 發(fā)表于 2022-8-21 09:04 | 只看該作者
robinsonlin 發(fā)表于 2022-8-20 13:05
兩個(gè)按鍵控制8個(gè)燈?  2個(gè)按鍵,只有4種狀態(tài)吧,沒(méi)弄明白你是如何實(shí)現(xiàn)的。 如果不是通過(guò)狀態(tài)來(lái)控制,那就是 ...

你好,老師,抱歉,這是自己改過(guò)的程序,最早的程序,有個(gè)自++,一個(gè)按鍵按一次,變量加一次,另外一個(gè)按鍵按一次,變量減一次,主程序通過(guò)變量值判斷來(lái)燈閃爍的。由于程序沒(méi)有成功,看了一本改成現(xiàn)在這樣,目的只是控制兩個(gè)燈,可惜兩個(gè)燈都不成功。
回復(fù)

使用道具 舉報(bào)

5#
ID:161164 發(fā)表于 2022-8-22 09:53 | 只看該作者
led1()到led7()是怎么寫(xiě)的?
回復(fù)

使用道具 舉報(bào)

6#
ID:123289 發(fā)表于 2022-8-22 15:40 | 只看該作者
假設(shè)控制8個(gè)燈,方案:
1、用一個(gè)字節(jié)LT(可以是變量),LT的8個(gè)位分別表示 8個(gè)燈的明暗。
2、建立兩個(gè)鍵的組合狀態(tài),有幾種顯示方式,就必須有幾種組合狀態(tài)。
3、將鍵的組合狀態(tài),與LT(對(duì)應(yīng)的顯示形式)值做成一個(gè)(按鍵與顯示)的【對(duì)應(yīng)表】。
4、當(dāng)按鍵出現(xiàn)某種組合時(shí),就從【對(duì)應(yīng)表】中取出對(duì)應(yīng)的LT值。
5、將LT送到燈的接口上顯示。
回復(fù)

使用道具 舉報(bào)

7#
ID:646520 發(fā)表于 2022-8-22 19:56 | 只看該作者
51和32是不一樣的哦,IO初始化需要使能相應(yīng)的時(shí)鐘和IO,需要配置IO模式,速度等。你的key_Init()函數(shù)一看就沒(méi)配對(duì),建議你先跟著32教程配置一遍初始化,后面就很輕松啦,加油。
回復(fù)

使用道具 舉報(bào)

8#
ID:731755 發(fā)表于 2022-8-23 08:59 | 只看該作者
lkc8210 發(fā)表于 2022-8-22 09:53
led1()到led7()是怎么寫(xiě)的?

在led.c文件里面,采用gpio的置0或者置1的兩個(gè)函數(shù),同時(shí)采用了延時(shí)函數(shù)
回復(fù)

使用道具 舉報(bào)

9#
ID:731755 發(fā)表于 2022-8-23 09:03 | 只看該作者
最后一個(gè)夏天1 發(fā)表于 2022-8-22 19:56
51和32是不一樣的哦,IO初始化需要使能相應(yīng)的時(shí)鐘和IO,需要配置IO模式,速度等。你的key_Init()函數(shù)一看就 ...

是一樣的,還有key.h的h文件,里面有這幾個(gè)KEY端口的宏定義,幾個(gè)C文件都有和教程一樣的H文件,不過(guò)沒(méi)有按照教程一模一樣的寫(xiě)而已
回復(fù)

使用道具 舉報(bào)

10#
ID:731755 發(fā)表于 2022-8-23 09:09 | 只看該作者
yzwzfyz 發(fā)表于 2022-8-22 15:40
假設(shè)控制8個(gè)燈,方案:
1、用一個(gè)字節(jié)LT(可以是變量),LT的8個(gè)位分別表示 8個(gè)燈的明暗。
2、建立兩個(gè)鍵 ...

是,最開(kāi)始的確和師傅寫(xiě)的那樣,設(shè)置一個(gè)變量,按壓按鍵一次,變量自加一次,另外一個(gè)按鍵,按壓一次,自減一次,最后沒(méi)有反應(yīng),改成圖片中那個(gè)樣子,
回復(fù)

使用道具 舉報(bào)

11#
ID:161164 發(fā)表于 2022-8-23 09:39 | 只看該作者
13872888583 發(fā)表于 2022-8-23 08:59
在led.c文件里面,采用gpio的置0或者置1的兩個(gè)函數(shù),同時(shí)采用了延時(shí)函數(shù)

代碼~請(qǐng)貼代碼
回復(fù)

使用道具 舉報(bào)

12#
ID:550613 發(fā)表于 2022-8-23 10:22 | 只看該作者
時(shí)鐘配置錯(cuò)了,按鍵是GPIOB,你配置成GPIOA了
回復(fù)

使用道具 舉報(bào)

13#
ID:550613 發(fā)表于 2022-8-23 10:36 | 只看該作者
把按鍵時(shí)鐘使能從GPIOA改成GPIOB

評(píng)分

參與人數(shù) 1黑幣 +10 收起 理由
13872888583 + 10

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

14#
ID:731755 發(fā)表于 2022-8-23 11:31 | 只看該作者
lkc8210 發(fā)表于 2022-8-23 09:39
代碼~請(qǐng)貼代碼

#ifndef _DALAY_H
#define _DELAY_H
#include "stm32f10x.h"

void Delay_ms(u16 a);
void Delay_us(u16 b);
#endif
回復(fù)

使用道具 舉報(bào)

15#
ID:731755 發(fā)表于 2022-8-23 11:32 | 只看該作者
lkc8210 發(fā)表于 2022-8-23 09:39
代碼~請(qǐng)貼代碼

#ifndef _KEY_H
#define _KEY_H

#include "stm32f10x.h"

#define key_PORT       GPIOB
#define key_1        GPIO_Pin_8
#define key_2        GPIO_Pin_9

#define key_PORT_RCC   RCC_APB2Periph_GPIOA
   
void key_Init(void);
u8 key(void);

#endif
#include "key.h"
#include "delay.h"

void key_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;//定義結(jié)構(gòu)體變量
       
        RCC_APB2PeriphClockCmd(key_PORT_RCC,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin=key_1|key_2;  //選擇你要設(shè)置的IO口
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;         //設(shè)置輸入模式
       
        GPIO_Init(key_PORT,&GPIO_InitStructure);            /* 初始化GPIO */
}

        u8 key(void)
        {
   
                if(GPIO_ReadInputDataBit(key_PORT,key_1)==0)
          {
                  Delay_ms(10);
                  if(GPIO_ReadInputDataBit(key_PORT,key_1)==0)
                        {
                     
                    
                                 while(GPIO_ReadInputDataBit(key_PORT,key_1)==0);
                                 return 1;
                        }
                        else
                        return 0;
                 }
          else  if(GPIO_ReadInputDataBit(key_PORT,key_2)==0)
        {
                  Delay_ms(10);
                  if(GPIO_ReadInputDataBit(key_PORT,key_2)==0)
                        {  
                     
                        while(GPIO_ReadInputDataBit(key_PORT,key_2==0));
                        return 2;
                 }       
     else                       
           return 0;                                  
        }
        else
        return 0;               
}       
回復(fù)

使用道具 舉報(bào)

16#
ID:731755 發(fā)表于 2022-8-23 11:33 | 只看該作者
lkc8210 發(fā)表于 2022-8-23 09:39
代碼~請(qǐng)貼代碼

ifndef _led_H
#define _led_H
#include "stm32f10x.h"
#define LED_PORT       GPIOA
#define LED_1       GPIO_Pin_0
#define LED_2       GPIO_Pin_1
#define LED_3       GPIO_Pin_2
#define LED_4       GPIO_Pin_3
#define LED_5       GPIO_Pin_4
#define LED_6       GPIO_Pin_5
#define LED_7       GPIO_Pin_6


#define LED_PORT_RCC   RCC_APB2Periph_GPIOA
   
void LED_Init(void);
void led1(void);
void led2(void);
void led3(void);
void led4(void);
void led5(void);
void led6(void);
void led7(void);

#endif

#include "led.h"
#include "delay.h"
/*******************************************************************************
* 函 數(shù) 名         : LED_Init
* 函數(shù)功能                   : LED初始化函數(shù)
* 輸    入         : 無(wú)
* 輸    出         : 無(wú)
*******************************************************************************/
void LED_Init()
{
        GPIO_InitTypeDef GPIO_InitStructure;//定義結(jié)構(gòu)體變量
       
        RCC_APB2PeriphClockCmd(LED_PORT_RCC,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin=LED_1|LED_2|LED_3|LED_4|LED_5|LED_6|LED_7;  //選擇你要設(shè)置的IO口
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;         //設(shè)置推挽輸出模式
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;          //設(shè)置傳輸速率
        GPIO_Init(LED_PORT,&GPIO_InitStructure);            /* 初始化GPIO */
       
       
        GPIO_SetBits(LED_PORT,LED_1|LED_2|LED_3|LED_4|LED_5|LED_6|LED_7);//??D1
       
}

void led1()
{
    GPIO_ResetBits(LED_PORT,LED_1);  
                Delay_ms(500);
                GPIO_SetBits(LED_PORT,LED_1);//點(diǎn)亮D1
                Delay_ms(500);
}
void led2()
{
    GPIO_ResetBits(LED_PORT,LED_2);   
                Delay_ms(500);
                GPIO_SetBits(LED_PORT,LED_2);
                Delay_ms(500);
}
void led3()
{
    GPIO_ResetBits(LED_PORT,LED_3);  
                Delay_ms(500);
                GPIO_SetBits(LED_PORT,LED_3);
                Delay_ms(500);
}
void led4()
{
    GPIO_ResetBits(LED_PORT,LED_4);  
                Delay_ms(500);
                GPIO_SetBits(LED_PORT,LED_4);//
                Delay_ms(500);
}
void led5()
{
    GPIO_ResetBits(LED_PORT,LED_5);  
                Delay_ms(500);
                GPIO_SetBits(LED_PORT,LED_5);
                Delay_ms(500);
}
void led6()
{
    GPIO_ResetBits(LED_PORT,LED_6);   
                Delay_ms(500);
                GPIO_SetBits(LED_PORT,LED_6);
                Delay_ms(500);
}
void led7()
{
    GPIO_ResetBits(LED_PORT,LED_7);   
                Delay_ms(500);
                GPIO_SetBits(LED_PORT,LED_7);
                Delay_ms(500);
}
回復(fù)

使用道具 舉報(bào)

17#
ID:731755 發(fā)表于 2022-8-23 11:35 | 只看該作者
vca 發(fā)表于 2022-8-23 10:22
時(shí)鐘配置錯(cuò)了,按鍵是GPIOB,你配置成GPIOA了

謝謝,我再找找看
回復(fù)

使用道具 舉報(bào)

18#
ID:731755 發(fā)表于 2022-8-23 11:36 | 只看該作者
vca 發(fā)表于 2022-8-23 10:36
把按鍵時(shí)鐘使能從GPIOA改成GPIOB

謝謝,我再找找看
回復(fù)

使用道具 舉報(bào)

19#
ID:731755 發(fā)表于 2022-8-24 08:45 | 只看該作者
vca 發(fā)表于 2022-8-23 10:36
把按鍵時(shí)鐘使能從GPIOA改成GPIOB

的確是那里錯(cuò)了。謝謝了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美黄色免费网站 | 91一区二区| 亚洲精品天堂 | 国产精品视频一二三区 | 国产日韩欧美中文 | 一区二区三区免费 | 久久亚洲一区二区三区四区 | 久久久www成人免费无遮挡大片 | 精品久久久久久久人人人人传媒 | 99精品国产一区二区三区 | 高清久久久 | 亚洲一区二区综合 | 欧美a v在线| 午夜av在线 | 综合久久99| 欧美精品网 | 激情 一区 | 日韩精品一区二区三区视频播放 | 国产国产精品久久久久 | 国产精品久久久久久久粉嫩 | 日本啊v在线 | 免费看国产精品视频 | 色综合成人网 | 狠狠躁18三区二区一区 | av黄色在线观看 | 亚洲精品美女在线观看 | 中文字幕成人在线 | 中文字幕亚洲区一区二 | 成人在线h| 韩国av电影网| 自拍偷拍第一页 | 免费黄色片在线观看 | 欧美一区二区大片 | 福利在线观看 | 国产黄色免费网站 | 免费成人高清在线视频 | 午夜免费福利电影 | 2022国产精品| 青青草这里只有精品 | 国产成人精品一区二 | 免费av一区二区三区 |