Where it comes to the ST HAL: the biggest problem is that they tried to make it too flexible and the hardware it tries to control is pretty crappy. A recipe for a disaster. But that is not because of MISRA. In general poorly maintainable code is due to lack of skills. A good programmer (software architect) can design (I specifically avoid the word 'write') software to adhere to MISRA coding rules.
Of course it was written to address a large number of use cases all in one, and that's one reason it's seen as "bloated" in practice, but let me tell you that the crux of the matter with the source code itself is not that. That "do it all" is just a design decision, and makes many of the functions inefficient, but that part is related to performance, not style.
The real horror is the amount of code duplication. That's something you get to see only if you really need to follow specific HAL functions, for instance, not to use them but to try and figure out how to use a specific peripheral when the doc itself is a mess. That's when you realize how convoluted *and* duplicated code is. There's a lot that could have been factored, but yet they seem to prefer duplication.
While duplicating code per se is not a direct byproduct of following MISRA-C, it's not directly discouraged either, and the general rule of "making everything explicit" tends to cause that effect. Devs shy away from factoring into sub-functions because they've been told that it obscures functionality. That's an insane approach, but quite common among those who blindly follow MISRA-C as far as I've seen.
One rule that also makes code pretty convoluted is the "single exit point" one. It has been deprecated in recent versions of MISRA-C, but of course not forbidden, so older code base following MISRA-C have tons of convoluted flow control to enforce the single exit point.
Of course you can still write maintainable and readable code following MISRA-C, without code duplication, but it's quite common that when people have to follow strict rules, which are already pretty constraining, they'll rarely want to go beyond that and will be happy when the code base just passes static analysis for those rules.