I always have the thigh and tibia bones IK-constrained, and it works well for walking. If you're having trouble with timing, try using ghosting for keyframes
I feel like my comment is not really helpful/convincing, so here's a link with a couple walk/run cycle exercises. All done with thigh+tibia bones IK-constrained. (disregard the dorky animals, that's another thing 🙂 ).
https://giphy.com/channel/antant
Take a look at timing/spacing for traditional animation, it might help.