OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2981|回复: 2

菜鸟求助

[复制链接]

15

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-2-18
在线时间
18 小时
发表于 2016-3-5 22:03:30 | 显示全部楼层 |阅读模式
1金钱
我在自己写按键控制STM32MINI板上的LED灯闪灭时,出现一些小BUG,,不是灯点不亮那么低级的问题,但本来按一下KEY1时DS0应该亮,但有时DS0会闪烁,而不是变亮。倾囊相求大神指点江山。。。主程序如下,后面还有两个.c程序和.h程序

#include "stm32f10x.h"
#include "led.h"
#include "key.h"
#include "delay.h"
#include "sys.h"
//#include "usart.h"

int main(void)
{
        int r=1,n=1;
        PAout(8)=1;
        PDout(2)=1;
        delay_init();
        ledinit();
        keyinit();
        while(1)
        {
                r=PAin(15);
                n=PCin(5);
                if(r==0)
                {
                        delay_ms(20);
                        if(r==0)
                        {
                                PAout(8)=0;
                                r=1;//不能用r++,由于程序运行快会出现bug(灯闪烁)
                                n=1;//不加这行程序也会出现bug(灯闪烁原因之二)
                        }
                        //r=1;
                        n=1;
                }
                //r++;
                //r=1;
                if(n==0)
                {
                        delay_ms(20);
                        if(n==0)
                        {
                                PAout(8)=1;
                                n=1;
                                r=1;
                        }
                        n=1;
                }
                n=1;
                //n++;
                //PAout(8)=0;
                //delay()
                       
        }
}
.c文件之一


#include "stm32f10x.h"
//#include "led.h"
#include "key.h"
//#include ""
void keyinit(void)
{
        //void ledinit();
        RCC->APB2ENR|=1<<4;//使能PORTC时钟
        GPIOC->CRL&=0xFFF0FFFF;
        GPIOC->CRL|=0x00080000;
        GPIOC->IDR|=1<<5;
       
}
key.h
#ifndef __KEY_H
#define __KEY_H

void keyinit(void);

#endif
       


.c文件之二

#include "stm32f10x.h"
#include "led.h"
//#include "delay.h"
void ledinit()
{
        RCC->APB2ENR|=1<<2;//使能PORTA时钟
        RCC->APB2ENR|=1<<5;//使能PORTD时钟
        //JTAG_Set(SWD_ENABLE);
        GPIOA->CRL&=0x0FFFFFF0;
        GPIOA->CRL|=0x80000008;
        GPIOA->IDR|=1<<0;
        GPIOA->IDR|=1<<15;//设置输入使能,上下拉输入
       
        GPIOA->CRH&=0x0FFFFFF0;
        GPIOA->CRH|=0x80000003;
        GPIOA->ODR|=1<<8;
       
        GPIOD->CRL&=0xFFFFF0FF;
        GPIOD->CRL|=0X00000300;
        GPIOD->ODR|=1<<2;
       
}
led.h文件

#ifndef __LED_H
#define __LED_H
void ledinit(void);
#endif


最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-5 22:03:31 | 显示全部楼层
回复

使用道具 举报

15

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-2-18
在线时间
18 小时
 楼主| 发表于 2016-3-24 16:47:45 | 显示全部楼层
该问题已解决
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 18:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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