assertions

#define ASSERT(expr) \
if (expr)            \
    {}               \
else                 \
    aFailed(F_NUM, __LINE__) 
      
trap()
{
    #ifndef NDEBUG
    #define _BKPT __ASM(“bkpt 0″)
    while(1);
    #endif
}

http://blog.feabhas.com/2013/02/developing-a-generic-hard-fault-handler-for-arm-cortex-m3cortex-m4/

http://blog.frankvh.com/2011/12/07/cortex-m3-m4-hard-fault-handler/

http://www.drdobbs.com/an-exception-or-a-bug/184401686

http://www.embedded.com/electronics-blogs/other/4023329/Assert-Yourself

https://interrupt.memfault.com/blog/asserts-in-embedded-systems