当系统通过 PUC 复位时、尝试强制完成复位(BOR)。 设置 PMMCTL0中的 PMMSWBOR 位似乎不能完全重新启动程序-我最终跳转到某个奇数位置。
在 main->中 使用此代码
if (SYSRSTIV > 0x10) //看门狗或其他部分复位
{
SYSRSTIV = 0;
PMMCTL0 = 0xA504;
}
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
当系统通过 PUC 复位时、尝试强制完成复位(BOR)。 设置 PMMCTL0中的 PMMSWBOR 位似乎不能完全重新启动程序-我最终跳转到某个奇数位置。
在 main->中 使用此代码
if (SYSRSTIV > 0x10) //看门狗或其他部分复位
{
SYSRSTIV = 0;
PMMCTL0 = 0xA504;
}
尊敬的 Paul:
我尝试在 DA 封装中使用 FR5739 Rev H 重现您的问题、但无法看到您描述的行为。
我使用了以下代码、根据 SYSRSTIV 值切换端口1上的不同 GPIO 引脚。
#include
int main (空)
{
WDTCTL = WDTPW + WDTHOLD; //停止 WDT
P1OUT = 0;
P1DIR = 0xFF;
while (1){
//开关(__even _in_range (SYSRSTIV、0x3E)
开关(SYSRSTIV)
{
情况0x00:{
P1OUT |= BIT3;
P1OUT &=~BIT3;
PMMCTL0 = 0xA504;
中断;} //无更多标志执行软件 BOR
情况0x02:{
P1OUT |= BIT0;
P1OUT &=~BIT0;
中断;} //BOR
情况0x04:{
P1OUT |= BIT1;
P1OUT &=~BIT1;
中断;} //RSTNMI
情况0x06:{
P1OUT |= BIT2;
P1OUT &=~BIT2;
中断;} //PMMSWBOR
默认值: {break;}
}
}
}
然后、我尝试触发 SWBOR 掉电(BOR_FLAG 首先出现)、并在按下 RST 引脚(RST_FLAG 首先出现)后触发 SWBOR。
在两种情况下、SW_BOR 被触发、SYSRSTIV 中的相应标志被置位。