研究生
最后登录1970-1-1
在线时间 小时
注册时间2016-7-27
|
昨天我打开了 ”stm32f10x_iwdg.h“文件,看了看里面的介绍和函数。觉得这个很简单。然后参考STM32中文手册独立看门狗章节。写出了如下代码。- #include "stm32f10x.h"
- #include "iwdg.h"
- int main(void)
- {
- LED_Init();//初始化LED0
- IWDG_Config ();
- GPIO_ResetBits(GPIOA,GPIO_Pin_8);//点亮LED0(复位熄灭再亮)
- while(1)
- {
- // Feed_IWDG();//喂狗
- }
- }
复制代码 LED_Init();//初始化LED0 和 IWDG_Config ();的原型我就不贴出来了。大家都会的这个。
然后我把程序下载到板子上,如上面所示,没有喂狗。结果LED一直是亮着的。这个就好像不对了,有的小伙伴估计就觉得是哪里有问题了吧。当时我做的时候也是这样子想的,然后就去找火哥的教程,呵呵,发现是一样的嘛,为啥我的 就一直亮着。乖乖,琢磨了好久结果发现,是这代码的执行速度很快的,LED是有反应的,只不过眼睛查觉不出来而已,如果有的小伙伴做了调试就知道了。
那么为了达到眼睛能够观察得到的现象,我们必须得做个延时,然眼睛看得见闪烁。简单延时函数(随意整的,别见怪啊)如下。
- /*注意:可以参照一下链接进行学习
- http://www.firebbs.cn/forum.php?mod=viewthread&tid=9876&highlight=%BF%B4%C3%C5%B9%B7
- */
- #include "stm32f10x.h"
- #include "iwdg.h"
- int main(void)
- {
- void delay(u32 time);//声明一个软件延时函数
-
- LED_Init();//初始化LED0
- IWDG_Config ();
- delay(2000);
- GPIO_ResetBits(GPIOA,GPIO_Pin_8);//点亮LED0(复位熄灭再亮)
-
-
- while(1)
- {
-
- Feed_IWDG();//喂狗
- }
- }
- //这里使用软件延时
- void delay(u32 time)
- {
- u32 count,i;
- for(i=time;i>0;i--)
- for(count=0;count<2000;count ++);
- }
复制代码 初次发帖,希望能够帮到大家。
|
|