Software reset on STM32
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2008-11-26 10:28 PM
Posted on November 27, 2008 at 07:28
Software reset on STM32
This discussion is locked. Please start a new topic to ask your question.
5 REPLIES 5
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2011-05-17 3:23 AM
Posted on May 17, 2011 at 12:23
Hi all,
I am trying to perform a software reset of a program runing in flash, but it ends up in the HardFaultExecption handler. I did copy a code snippet from an IAP application note: typedef void (*pFunction)(void); pFunction Jump_To_Application; #define ApplicationAddress 0x8000000 /** * @brief Executes a jump to code memory start adr. Soft reset. * @param None * @return Nothing */ void ResetAppl(void) { u32 JumpAddress; JumpAddress = *(vu32*) (ApplicationAddress + 4); /* Jump to user application */ Jump_To_Application = (pFunction) JumpAddress; /* Initialize user application's Stack Pointer */ __MSR_MSP(*(vu32*) ApplicationAddress); Jump_To_Application(); } When debugging I can see that the function pointer points to 0x080046E1 ?? Why ? shouldent it point to 0x08000004 ? however modifying the address to 0x08000004 doesent help either ! btw. I use the IAR ARM 5.11 compiler. Best regards BrianOptions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2011-05-17 3:23 AM
Posted on May 17, 2011 at 12:23
Hi Brian,
If you only want to reset the Cortex-M3, you can use a register in the NVIC called Application Interrupt and Reset Control register (Address 0xE000ED0C), bit 0 (VECTRESET). It might be easier to see what went wrong if you can tell us the value of fault status registers and if possibly, dis-assembled code generated by the compiler.Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2011-05-17 3:23 AM
Posted on May 17, 2011 at 12:23[ This message was edited by: niek_ebbers on 27-11-2008 11:12 ]
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2011-05-17 3:23 AM
Posted on May 17, 2011 at 12:23
See NVIC_GenerateSystemReset function in the ST firmware library. If your using the firmware library just call this function.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2011-05-17 3:23 AM
Posted on May 17, 2011 at 12:23
Not using the firmware. I like a good challenge :)
But it worked perfectly. In my case: Scb.AIRCR.all = 0x05FA0000 | (u32)0x04; Thanks!