現單片機已經白菜價了,可用的資源也不斷豐富起來.
有一天我突發奇想,用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() )
//要執行的動作
未完待續....