现单片机已经白菜价了,可用的资源也不断丰富起来.
有一天我突发奇想,用C++写单片机不是更方便.(相信很多人有类似的想法,不过在网上找到的参考资料也太少了)
话说很多编译器本身是支持C++,大部分人认为C++效率C低,我想说的是当年Android刚出来的时候,也受到了很多人的抵触...
手上正好有块STM32开发板,就拿它开刀了:
一.把库中的.C文件改成.CPP

二.定义一个GPIO的类
单片机的helloworld,那就是流水灯.
要是能够简化定义成这样子就好理解了
STM32PIN DS1_N(PF,6);
STM32PIN DS2_N(PF,7);
STM32PIN DS3_N(PF,8);
STM32PIN DS4_N(PF,9);
于是我定义了下面这么一个类
从上面的类,可以看到,让GPIO拉高使用high(),拉使用low(),
为了能产生高效的代码,其中大部分函数使用内联,
将 GPIO_SetBits() GPIO_ResetBits()函数调用改写成寄存器方式
//GPIO_SetBits(m_gpio.port, m_gpio.pin);
inline void high(void)
{
m_gpio.port->BSRR = m_gpio.pin;
}
//GPIO_ResetBits(m_gpio.port, m_gpio.pin);
inline void low(void)
m_gpio.port->BRR = m_gpio.pin;
}
于是流水灯的程序就可以写这样子:
接着让USER2键按下,流水灯反过来计数,只要这样定义
STM32PIN USER2(PD,3,GM_IN_FLOATING);
使用的时候这样写
if( USER2.islow() )
//要执行的动作
未完待续....