>通信プロトコルなんかルだと、これは結構使いこなすまでのハードルは高いとオモタ

例えば i2c

生成コード読むと、
通常ルーチンはxx_Create, xx_StartCondition, xx_Master_Sendコールしただけで、
あとはバイト転送完了割り込みのなかで、
ACKチェックと指定バッファのポインタをインクリメントしながら最後まで自動転送してくれて、
最後Stopコンディションまで自動発行してくれる。
通常ルーチン側はxx_Master_SendのあとはHaltして、
xx_callback_sendend()で設定したフラグでも待ってればいい。

実によくできてるし、RTOSでイベントフラグかセマフォ使ってi2cアクセスを排他制御して、
無駄なくCPUパワーを使うにはこの形が一番よさそうだけど、、

Startコンディションは通常ルーチン側で発行してやる必要があるのに対して、
Stopコンディションは割り込みのなかで自動で発行されるとか、

割り込みでバッファへのポインタをインクリメントする必要(割り込みルーチンに引数渡せないので)から、
xx_Master_Sendの引数にしたバッファへのポインタをグローバルのポインタに代入したり、

細かな部分で統一性に欠く部分や
組込みエンジニア以外のソフト屋だとギョッとする部分もあって、
そこそこわかりづらいなとオモタ。
そもそも、
CPUをシングルタスクに専念させればいいとか、とりあえずi2cを使いたいルネチップnewvieユーザーにとっては、
この生成コードは理解して使いこなす上でハードルが相当高いんじゃないか?
転送完了割り込みなど使わず、Ackポーリングしながらでもi2c転送できるし。
そもそも直接ポート叩いても簡単に書けるi2cで、この生成コードに、何のひな形も用意しないのは不親切だとオモタ
ありがたがるのはベテランユーザーじゃね?