OpenEdv-开源电子网

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

求助stm32软件复位、看门狗复位问题

[复制链接]

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
发表于 2015-1-13 21:34:00 | 显示全部楼层 |阅读模式
5金钱
void  main(void)
{
        变量声明初始化;
        初始化语句1;
        初始化语句2;
        初始化语句3;
        初始化语句4;
        初始化语句5;
        .....
        .....
        while(1)
        {
                大循环
                .......
                .......
        }
       

}

工程代码如上所述。系统运行过程中有可能死机,为了系统的正常运行,我引用了独立看门狗程序,但是当看门狗复位的时候,程序会重新从main  函数入口执行,依次执行变量声明初始化、初始化语句1..最后才到大循环。但是实际应用中,我们不希望看门狗复位后,程序又从main函数处开始执行,而是希望直接执行 while大循环 或者只执行初始化语句1-3 后才到大循环。请问怎么实现?能实现吗?

最佳答案

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

你这个 不好实现的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-13 21:34:01 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2015-1-13 22:58:08 | 显示全部楼层
goto语句
main()
{
if(看门狗复位)
     goto   大循环;

大循环:
        while(1)
        {
              ;
         }
}


//不知对不对
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2015-1-13 22:59:21 | 显示全部楼层
goto   好像要慎用!!!!
回复

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
 楼主| 发表于 2015-1-15 10:32:54 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
判断STM32 的复位类型,FlagStatus  RCC_GetFlagStatus(u8 RCC_FLAG)获取复位类型
// 函数名称: RCC_GetFlagStatus
// 功能描述: 检查指定的RCC标志设置与否.
// 输入参数: RCC_FLAG:要检查的标志.
//                    这个参数可以是下面的值之一:
//                       - RCC_FLAG_HSIRDY: HIS振荡时钟就绪
//                       - RCC_FLAG_HSERDY: HSE振荡时钟就绪
//                       - RCC_FLAG_PLLRDY: LL时钟就绪
//                       - RCC_FLAG_LSERDY: LSE振荡时钟就绪
//                       - RCC_FLAG_LSIRDY: LSI振荡时钟就绪
//                       - RCC_FLAG_PINRST: 引脚复位
//                       - RCC_FLAG_PORRST: OR/PDR复位
//                       - RCC_FLAG_SFTRST: 软件复位
//                       - RCC_FLAG_IWDGRST: 独立看门狗复位
//                       - RCC_FLAG_WWDGRST: 窗口看门狗复位
//                      - RCC_FLAG_LPWRRST: 低电量复位
// 输出参数: 无
// 返回参数: RCC_FLAG的新状态(SET或RESET).

比如不要初始化 “初始化语句3;” ,那么在该语句前面加个判断复位类型的语句,不知道可行否??
回复

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
 楼主| 发表于 2015-1-15 14:28:47 | 显示全部楼层
回复【5楼】1375917982gxut:
---------------------------------
if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) == RESET)
{
  printf("独立看门狗复位\r\n");
}

if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)
{
  printf("独立看门狗没复位\r\n");
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-15 23:17:45 | 显示全部楼层
回复【5楼】1375917982gxut:
---------------------------------
动手试试
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 00:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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