我正在尝试使用c ++ 14创建STM32的中断表。使用Base class
属性和适当的ld脚本设置此表可以正常工作:
section
我还使用类似的模板实现了某种可移植性:
[[gnu::section(".interrupt_vector_table")]]
static const InterruptHandle interrupts[66] = {
nullptr,
ResetHandler,
nullptr,
...
};
我想要的是使中断表更灵活(允许仅定义使用的中断并保留默认的其他中断),并将其移至enum MCU {F103x6, F103x8, ...};
template<MCU T> class stm;
template<> class stm<F103x8> {
void set_pin(...);
...
};
类中以使其能够像这样使用:
stm
但是我找不到胶水如何使其工作-我无法定义静态类成员并使用数组对其进行初始化-如下所示的许多不同代码变体给了我stm<F103x8, interrupt<TIM2_IRQ, my_handler>> cpu;
int main() {
cpu.init_clock();
...;
}
:
constexpr needed for in-class initialization of static data member
预先感谢您的任何建议。
UPD 我想实现一个仅标头的库。