OpenEdv-开源电子网

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

独立看门狗的小程序出错,大家帮忙看下啊

[复制链接]

22

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2017-3-18
在线时间
17 小时
发表于 2017-4-20 14:46:23 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 十七年 于 2017-4-20 14:47 编辑

今天学了独立看门狗,写个小程序,想要实现的功能如下:
程序开始,led灯灭,1s后亮,1s后再灭,如果按键1检测到被按下,就执行喂狗,LED灯就会一直灭,独立看门狗设置的复位时间大约是1s,如果1s内没喂狗即未检测到按键1被按下,程序就会复位,重新执行,LED灯被复位就会再灭亮灭闪烁一次。
我写的下面这个程序执行后,led是不断的灭亮灭,就算很快的按下键,也是不断灭亮灭,也就是说是在不断复位,喂狗程序一直没有执行,所以我怀疑是不是判断喂狗的条件出现错误,但又不知道哪里错了。
附图是按键和led的接线图。

#include "stm32f10x.h"
#include "delay_ms.h"
#define BitBand(addr,n) *(volatile unsigned long*)((addr & 0xf0000000)+0x2000000+(addr & 0xfffff)*32+n*4)    //位绑定公式

#define GPIOC_ODR_A (GPIOC_BASE+0x0c)
#define GPIOC_IDR_A (GPIOC_BASE+0x08)
#define GPIOD_ODR_A (GPIOD_BASE+0x0c)
#define GPIOD_IDR_A (GPIOD_BASE+0x08)

#define PCout(n) BitBand(GPIOC_ODR_A,n)
#define PCin(n)  BitBand(GPIOC_IDR_A,n)
#define PDout(n) BitBand(GPIOD_ODR_A,n)
#define PDin(n)  BitBand(GPIOD_IDR_A,n)

#define Key1 PCout(4)     //位绑定
#define LED1 PDout(2)

void RCC_Configuration(void); //声明
void GPIO_Configuration(void);


int main(void)
{
        RCC_Configuration();  //打开时钟
        GPIO_Configuration();  //GPIO配置

        //设置led灯的主要目的就是为了显示出是否实现了IWDG的功能
        LED1=1;   //LED的公共端接的是3.3V,复位值是0,复位亮,置1使灭
        delay_ms(1000); //延时1s
        LED1=0;             //1s后亮
        delay_ms(1000); //延时1s
        LED1=1;              //灭
        
        IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
        IWDG_SetPrescaler(4);
        IWDG_SetReload(625);
        IWDG_ReloadCounter();
        IWDG_Enable();

        while(1)
        {
                        if(Key1==0)
                {
                        delay_ms(10);
                        if(Key1==0) IWDG_ReloadCounter();
                }
        }
}

void RCC_Configuration()
{
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD,ENABLE);

}
void GPIO_Configuration()
{
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
        
        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
        GPIO_Init(GPIOD,&GPIO_InitStructure);
}
1492670191(1).png
1492670203(1).png

最佳答案

查看完整内容[请看2#楼]

[mw_shl_code=c,true]        GPIO_InitTypeDef GPIO_InitStructure;         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;         GPIO_Init ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2017-4-19
在线时间
3 小时
发表于 2017-4-20 14:46:24 | 显示全部楼层
[mw_shl_code=c,true]        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&GPIO_InitStructure);[/mw_shl_code]
上面一段代码中有一句应该这样写:(推挽输出改为浮空输入,按键是需要检测输入电平的,你怎么能初始化成输出功能了)
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING; ;
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3774
金钱
3774
注册时间
2015-4-26
在线时间
766 小时
发表于 2017-4-20 15:42:52 | 显示全部楼层
按键引脚是推挽输出,你写错了
我有故事,你有酒吗
回复

使用道具 举报

22

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2017-3-18
在线时间
17 小时
 楼主| 发表于 2017-4-20 17:59:21 | 显示全部楼层
来俩不甜的 发表于 2017-4-20 15:42
按键引脚是推挽输出,你写错了

写的就是推挽输出,应该是推挽输入吗?
回复

使用道具 举报

22

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2017-3-18
在线时间
17 小时
 楼主| 发表于 2017-4-20 18:03:07 | 显示全部楼层
十七年 发表于 2017-4-20 17:59
写的就是推挽输出,应该是推挽输入吗?

上啦输入?
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3774
金钱
3774
注册时间
2015-4-26
在线时间
766 小时
发表于 2017-4-21 09:05:14 | 显示全部楼层

上拉 浮空都可以,按键肯定是输入啊
我有故事,你有酒吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-21 23:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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