This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

IWDG and NVIC_SystemReset on Keil MCBSTM32

Hi all, I'm crossposting this from ST forum since i didn't get any response and the question is still open and becoming urgent in choosing the microcontrollore for our project.

I'm using the keil MCBSTM32 demoboard (F103RB micro) and I'm coding with the latest std_periph lib (V3.1.0 - 06/19/2009) with keil uVision 3 V3.85 and ULINK-Me.
The board is powered from both the usb cable and the ULINK (ULINK is not supposed to power the board, but I've seen that even if the main usb power cabe is diabled the board is powered with just the ULINK connected).

The indipendent watchdog doesn't seems to work properly if the debugger is running. All seems ok if the debugger and ulink are off. Why ???
From the board schematics, the NRST pin is connected to both the board reset button AND the jtag connector.

Also, in this unclear situation, the undocumented function NVIC_SystemReset (taken from some FLASH protection example) does not works (it seems to block on the while(1) infinite cycle waiting for reset after setting the NVIC_SYSRESETREQ bit.
Does this function relay on the IWDG to reset ?
Anyone with similar problem ?

Parents
  • Hi Marco

    Systemreset:
    I use the following code to request a systemrest out of unprivileged mode.

    void __svc(1) PeriResetSystemSVC( void );
    void __SVC_1                    ( void ) {
    
        // note: beginning of protected function to reset the system
        __disable_irq();
    
        // set software reset flag
        NVIC_GenerateSystemReset();
        // hack: for debug endless loop should never be reached
        while( 1 ) {
            __nop();
        }
    }
    
    

    The differences are that the irq get disbaled and that I use an older version of the ST fimrware lib. But it isn't obviously to me, way your code isn't running.

    Watchdog:
    Perhaps you have to disable the "run to main()" check box at the debug settings?

Reply
  • Hi Marco

    Systemreset:
    I use the following code to request a systemrest out of unprivileged mode.

    void __svc(1) PeriResetSystemSVC( void );
    void __SVC_1                    ( void ) {
    
        // note: beginning of protected function to reset the system
        __disable_irq();
    
        // set software reset flag
        NVIC_GenerateSystemReset();
        // hack: for debug endless loop should never be reached
        while( 1 ) {
            __nop();
        }
    }
    
    

    The differences are that the irq get disbaled and that I use an older version of the ST fimrware lib. But it isn't obviously to me, way your code isn't running.

    Watchdog:
    Perhaps you have to disable the "run to main()" check box at the debug settings?

Children