Just to reiterate (in case you haven't covered it already), you're controlling inductor current first and foremost. Why? Transistors explode beyond their design current ratings, simple as that. Running an inner current loop also gives you an operational current limit for free (the current amp simply delivers whatever INPUT_MAXVAL corresponds to!).
(For the typical, voltage sourced, switched inductor, converter. Obviously this is flipped in a current sourced, switched capacitor, converter. Not to be confused with a charge pump (voltage sourced, switched capacitor), or, I guess what would be called a "flux pump" (current sourced, switched inductor).)
To implement such a control loop digitally, you of course need bandwidth high enough to deal with that; preferably, sample rate a few times F_sw would be good. This makes the STM32F0 range of MCUs (and comparable parts from others) a practical minimum, and the F4 mentioned above will give you a lot of CPU cycles -- and hardware -- to spare.
You may also consider an attachable controller like MCP1630, which contains all the hard real-time logic, while you can provide much less strict signals from the MCU.
Some have this integrated (I see some PICs that offer it), or have general enough hardware that you can construct something equivalent (e.g., AVR event system; probably a lot of ARMs; lots of SoCs; and FPGAs of course).
You can offload more and more; the canonical, old-school way is a DAC or two, driving the setpoint(s) of a traditional SMPS controller/regulator. This is stable even if the CPU crashes (the setpoints simply freeze in place), and a simple watchdog can disable the outputs in that case. You barely need 1 MIPS to run such a system (e.g., a 6502).
Tim