stm8s 独立开门狗复位是不是等价于复位_百度知道后使用快捷导航没有帐号?
查看: 2315|回复: 1
对于STM32看门狗和复位无法使用的问题
在线时间2046 小时
威望13826 分
芯币28408 枚
E金币39 枚
TA的帖子TA的资源
最近手头有个产品出了点问题,所以想把STM32的软件复位和看门狗功能打开,可无路如何都无法实现。通过多个小时,多种方法一直无果。。。。最后终于找到问题:
这里使用了复位芯片MAX809,由于此芯片把复位端口拉高了,所以,导致芯片无法实现软复位功能,其解决的方法是:
1.去掉MAX809,采用RC复位电路;
2.在MAX809与复位端口之间串联一个1K的电阻。
本帖子中包含更多资源
才可以下载或查看,没有帐号?
&&&&&&&&&&
在线时间523 小时
威望2754 分
芯币7158 枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 2754, 距离下一级还需 746 积分
五彩晶圆(初级), 积分 2754, 距离下一级还需 746 积分
学习了,顶起
工程 = 数学+物理+经济
荣誉会员勋章
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
Powered by
逛了这许久,何不进去瞧瞧?STM32单片机看门狗复位后,全局变量的值会怎么处理 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 3614|回复: 4
STM32单片机看门狗复位后,全局变量的值会怎么处理
主题帖子威望
新手上路, 积分 192, 距离下一级还需 -142 积分
新手上路, 积分 192, 距离下一级还需 -142 积分
请教大家,我现在用STM32F103单片机,程序里面在定义全局变量u8 Count=0x0A;在程序函数调用的时候对他进行了赋值操作也就是更改了Count值的大小使其等于0x1A,现在单片机出现了看门狗溢出复位,请问这时候的count值是0x0A还是0x00,或者是0x1A。求解惑!!!
主题帖子威望
金牌会员, 积分 1292, 距离下一级还需 1708 积分
金牌会员, 积分 1292, 距离下一级还需 1708 积分
RE:STM32单片机看门狗复位后,全局变量的值会怎么处理
主题帖子威望
初级会员, 积分 143, 距离下一级还需 57 积分
初级会员, 积分 143, 距离下一级还需 57 积分
RE:STM32单片机看门狗复位后,全局变量的值会怎么处理
复位后,进入main()你的第一句C语言之前,已经给你搬移好赋值好了。
主题帖子威望
新手上路, 积分 192, 距离下一级还需 -142 积分
新手上路, 积分 192, 距离下一级还需 -142 积分
回复:STM32单片机看门狗复位后,全局变量的值会怎么处理
这个复制是用语句执行的吗,我的理解看门狗复位直接修改的PC指针,如果复位成初始值请问下这个赋值操作在那边完成,IAR的编译环境里面能直接看到吗
主题帖子威望
初级会员, 积分 143, 距离下一级还需 57 积分
初级会员, 积分 143, 距离下一级还需 57 积分
RE:STM32单片机看门狗复位后,全局变量的值会怎么处理
在启动s文件调用__main 到进入你主程序main()第一行代码的之间。
调试时可以看到,主要是从Flash复制RW区所有变量初始值到RAM中变量分配的位置,清除RAM中所有ZI变量为0。
站长推荐 /1
即日起,ST面向全球征集STM32解决方案,其中优秀项目将有机会作为参考案例在ST官网展示,同时还将携手ST共赴线下展会,与全球技术大牛一较高下。
Tel: 3-8056
备案号: 苏ICP备号-2
Powered by后使用快捷导航没有帐号?
查看: 3804|回复: 7
STM8休眠不定时自动复位,不是看门狗的问题,折腾好几天了,要崩溃了
在线时间3 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 8, 距离下一级还需 -3 积分
一粒金砂(初级), 积分 8, 距离下一级还需 -3 积分
用STM8S003做了一款小报警器,使用电池供电,待机时休眠,外部中断唤醒,现在的问题是不使用休眠工作正常,使用休眠就出现不定时重启,无规律,有时一天重启一次,有时连续重启好多次,读RST_SR没复位标志,连续折腾了几天,现在没头绪了,客户还一直在催,要崩溃了
&&&&&&&&&&
在线时间2046 小时
威望13826 分
芯币28408 枚
E金币39 枚
TA的帖子TA的资源
用示波器看看是否有外部中断产生。。。。。。。。。。。。。
在线时间361 小时
威望509 分
芯币2359 枚
E金币291 枚
TA的帖子TA的资源
纯净的硅(初级), 积分 509, 距离下一级还需 291 积分
纯净的硅(初级), 积分 509, 距离下一级还需 291 积分
只能给你个建议,先理清代码运行的思路,再规范一下代码,相信你很快就会找到问题点的。
在线时间3 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 8, 距离下一级还需 -3 积分
一粒金砂(初级), 积分 8, 距离下一级还需 -3 积分
现在已经确定是非法操作码引起的复位,读到复位标志了,RST_SR=0x40,程序中用了2个外部中断和一个定时器中断,不使用休眠一切正常,使用休眠就无规律重启,对汇编不太懂,实在是找不出原因了
请修改签名 ^_^
在线时间3 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 8, 距离下一级还需 -3 积分
一粒金砂(初级), 积分 8, 距离下一级还需 -3 积分
重启后RST_SR的值是0X04,非法操作引起的重启,但不休眠从不重启啊,休眠前已经把定时器关掉了,实在想不明白
在休眠之前,只关闭定时器可能还不够。可能还需要再多加入一些处理操作。比如把 GPIO 口设置成高阻态,关闭掉 GPIO 口的时钟。&
请修改签名 ^_^
在线时间745 小时
威望7597 分
芯币6505 枚
E金币200 枚
TA的帖子TA的资源
重启后RST_SR的值是0X04,非法操作引起的重启,但不休眠从不重启啊,休眠前已经把定时器关掉了,实在想不明白在休眠之前,只关闭定时器可能还不够。可能还需要再多加入一些处理操作。比如把 GPIO 口设置成高阻态,关闭掉 GPIO 口的时钟。
在线时间3 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 8, 距离下一级还需 -3 积分
一粒金砂(初级), 积分 8, 距离下一级还需 -3 积分
谢谢各位朋友关注,问题已经解决,竟然是编译器的问题,开始用的是IAR,就出现上面所说的重启,最后把程序精简,只保留外部中断唤醒和休眠,照样重启。实在没办法,换了STVD,到目前一正常
请修改签名 ^_^
在线时间3 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 8, 距离下一级还需 -3 积分
一粒金砂(初级), 积分 8, 距离下一级还需 -3 积分
贴出IAR下的简化测试程序,有经验的朋友帮忙看下,编译器按理说不应该有这样的问题啊
#include &iostm8s103f3.h&
& & & & & & & & & & & & & & & & & & & & & & & & & & & &
#define uchar unsigned char
#define uint&&unsigned int
#define beep& && && && &&&PD_ODR_ODR6
#define led& && && && &&&PD_ODR_ODR5
#define RF& && && && && & PA_IDR_IDR3& & & && &
void delay_1ms(uint x)& & //1毫秒延时
& & uchar b,c;
& & for(;x&0;x--)
& && &&&for(b=5;b&0;b--);
& && && &&&{
& && && && && && &for(c=150;c&0;c--);
& && && &&&}
void delay_us(uint x)
& & for(;x&0;x--)
& && && & x++;x--;
& & & && &
void MJ(uint dey)
&&for(;dey&0;dey--)
& && &beep=!
& && &delay_us(200);
void BB(uint size,uchar Number)
&&TIM2_IER_UIE=0;
&&TIM4_IER_UIE=0;
&&for(;Number&0;Number--)
& && &&&led=!
& && &&&MJ(size);
& && &&&led=!
& && &&&delay_1ms(size);& & & & & & & & & & & & & & & &
TIM2_IER_UIE=1;
#pragma vector=0x05&&//PA
__interrupt void ext_A3(void)& & //RF外部中断
void Init_GPIO(void)&&//IO初始化
& & PA_DDR=0xF7;
& & PA_CR1=0x00;&&
& & PA_CR2=0x00;&&//PA3中断,休眠前开启
& & PD_DDR=0//ef
& & PD_CR1=0x60;
& & PD_CR2=0x00;
& & PD_ODR=0X20;
& & CLK_CKDIVR=0X02;& & //CPU 4分频& &
void system_start()& &//上电初始化
{& & & && &
&&& & & & Init_GPIO();
& & & & EXTI_CR1=0XC1;& &//PD上升沿和下降沿触发,PA仅上升沿触发
& && &&&PA_CR2=0x08;&&//开启PA3上升沿中断& & & &
& && &&&asm(&rim&);//开全局中断& & & && &&&
void main()
& & system_start();
& & BB(200,6);
& & while(1)
& && &{& && && && &&&
& && &&&led=!
& && &&&asm(&HALT&);
请修改签名 ^_^
Powered by
逛了这许久,何不进去瞧瞧?stm8 halt 看门狗 怎么解决_百度知道