This solution works if you are using Views to display your content (if you aren't, it's up to you which is preferable in your case between using Views and getting its many other advantages, or installing Smart Trim and keeping things simple. Views is complicated but learning it is time well invested).
- Choose "Summary or trimmed" as the field's "Formatter"
- Set the "Trim length" value much too high - big enough that it will always cover the whole of all the elements you'll want trimmed (e.g. 1500)
- Under "Rewrite settings", select "Trim this field to a maximum length". Tick "Field can contain HTML", keep "Trim only on a word boundary" ticked, and enter the real character count in "Maximum length" (e.g. 200). It's a good idea to keep "Add an ellipsis" ticked to, so incomplete sentances don't look like a mistake.
So in our example, Drupal will choose the summary if there is one, or the body text if there isn't. It'll count 1500 characters, and trims cutting out any incomplete HTML elements. Unless your article contains an excessively long insane paragraph from hell, this will be at least 200 characters. Then Views' filter kicks in, trims it to 200 characters by the nearest word. This gives the real desired length, without losing the option of showing a trimmed version of the summary if there is one.
With "summary or trimmed" or "trimmed", the trimming is based on whole HTML elements so that long paragraphs can be cut out entirely. I've found that sometimes, if there's one long introductory paragraph, the trimmed field would show up completely empty - this solves that.