میتونید بعد از هر بار اجرای برنامه ، میکرو رو ریست کنید یا اینکه برنامه رو داخل حلقه بزارید و بعد از مثلا 30 بار اجرا ، میکرو رو ریست کنید یا اینکه تایمر رو فعال کنید و در زمانهای خاص میکرو رو ریست کنید .
برای ریست نرم افزاری میتونید از کتابخونه ای که لینکش رو در زیر گذاشتم استفاده کنید یا از تابعی که در زیر قرار دادم استفاده کرده و برای راه اندازی مجدد برنامه ، صداش کنید .
لینک کتابخانه :
https://github.com/WickedDevice/SoftReset
کد:
void software_Reset() // Restarts program from beginning but does not reset the peripherals and registers
{
asm volatile (" jmp 0");
}
لینک منبع