求大侠帮看看这个程序,GPIO灯一闪一闪的

2019-10-11 14:13发布

求大侠帮我看看这个程序,本以为不按键的情况下LED灯会固定亮或者灭,但下到板子里在不按键的情况下为啥LED一闪一闪的?
[mw_shl_code=c,true]#define KEY GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include <stdio.h>
void delay(u32 num){
        u32 i=0;
                for(;i<num;i++);
}
int main(){
        GPIO_InitTypeDef GPIO_Structure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB,ENABLE);
        GPIO_Structure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_Structure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Structure.GPIO_Pin=GPIO_Pin_13;
        GPIO_Init(GPIOC,&GPIO_Structure);
        GPIO_ResetBits(GPIOC,GPIO_Pin_13);
        //初始化LED端口
        GPIO_Structure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_Structure.GPIO_Pin=GPIO_Pin_8;
        GPIO_Init(GPIOB,&GPIO_Structure);
        //初始化按键端口
        
        while(1){
                //GPIO_ResetBits(GPIOB,GPIO_Pin_11);
                if(KEY==1){
                        GPIOC->ODR^=GPIO_Pin_13;
                        delay(5000000);
                        break;
                //翻转端口方式
                }
               
                //GPIO_SetBits(GPIOB,GPIO_Pin_11);
                //delay(5000000);
               
        }
}[/mw_shl_code]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
wmaxwell
1楼-- · 2019-10-11 19:01
 精彩回答 2  元偷偷看……
南有乔木
2楼-- · 2019-10-11 22:08
GPIO_ResetBits(GPIOC,GPIO_Pin_13);改为GPIO_SetBits(GPIOC,GPIO_Pin_13)试试
luyq
3楼-- · 2019-10-12 01:01
南有乔木 发表于 2017-3-15 09:46
GPIO_ResetBits(GPIOC,GPIO_Pin_13);改为GPIO_SetBits(GPIOC,GPIO_Pin_13)试试

试过了,区别只是STM32上电开始闪还是按键以后开始闪
南有乔木
4楼-- · 2019-10-12 06:36
luyq 发表于 2017-3-15 09:48
试过了,区别只是STM32上电开始闪还是按键以后开始闪

你仿真跑一遍就知道为什么了。
是不是if条件一直为真的缘故了
hystcy
5楼-- · 2019-10-12 12:15
试试去掉break指令
luyq
6楼-- · 2019-10-12 16:25
 精彩回答 2  元偷偷看……

一周热门 更多>