完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
今天学了独立看门狗,写个小程序,想要实现的功能如下:
程序开始,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); }
评分
|
||
相关推荐
4个回答
|
||
是不是没有打开相应的时钟啊
|
|
|
|
应该在喂狗时加一个LED显示,判断是否有喂狗,这种情况,除非你一直按着按键,不然一松按键超过一秒就又复位了,要通过另一个标志来判断有没有喂狗,不能通过同一个LED来判断有没有喂狗
|
|
|
|
|
|
按键应该设置为浮空输入
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2005 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1858 浏览 3 评论
4442 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2007 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2513 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 05:10 , Processed in 0.705037 second(s), Total 88, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号