Посмотрите страничку
http://ziblog.ru/2012/09/09/linii-vvoda ... ast-3.html
там есть набор макросов для линий ввода-вывода. Как работать с этими макросами возможно написано в одной из тем ранее. Макросы гораздо сложнее Ваших. Но может будет полезно.
А где ж тогда переменные хранить? 24Сххх цеплять? Я вроде как видел eeprom в некоторых ARM-овских процах.
У ST есть AN по эмуляции EEPROM в FLASH. Вот моя заметка по этому поводу
http://we.easyelectronics.ru/STM32/prog ... flash.html
Вот реализация http://www.radiokot.ru/forum/viewtopic. ... 06#p889006 - хранение как во флеш так и в бекап сегменте


