в GCC inline нужно определять в .h, тогда 100% заинлайнится, может в IAR по-другому... https://gcc.gnu.org/onlinedocs/gcc/Inline.html
This combination of inline and extern has almost the effect of a macro. The way to use it is to put a function definition in a header file with these keywords, and put another copy of the definition (lacking inline and extern) in a library file. The definition in the header file causes most calls to the function to be inlined. If any uses of the function remain, they refer to the single copy in the library.