Also, there's unlikely to be a significant downside to using a type that is smaller than native, so if you can use an 8 bit int to hold the values you need then you can just use that on all architectures and be done with it. There may be a *small* performance penalty for smaller sizes on more complex architectures (like x86), but it's unlikely to be enough to worry about, and there should be no difference on Cortex M.
One thing you may want to do is typedef the storage type you want to use separately from the enum. You can still typedef the enum if you want. Typedefing the storage type won't give you any additional type safety (neither will the enum itself!), but it will make it clear that the size is chosen deliberately, and if you need to change that size at any point (because you've added a bunch of enum values, or you have some corner case where the size does matter) you're only changing it in one place. You'll see this in libraries for these exact reasons.