芯科公司的efm32微控制器與st的stm32同為32位arm架構的微控制器。它的特點是能耗管理做的更細更到位。所以在很多對能耗非常在意的場合,比如用電池供電的指紋鎖、物聯網感測器等領域應用比較廣泛。但芯科公司的微控制器比較缺乏系統的學習資料,雖然**上提供了應用例項與說明。但總體上給人不成系統並且零亂的感覺。對想使用芯科微控制器的開發人員造成不小的入門困擾。在這裡我們通過乙個系列,拿出真正可執行的**例項來幫到相關的開發者。
微控制器開發中,非常重要的第一步就是能夠調通串列埠。只要串列埠一通,就可以讓微控制器隨時告訴我們程式的執行狀態。為開發工作帶來很大的便利。所以本系列從串列埠的使用開始。
efm32微控制器的串列埠相比較於stm32系列,特殊之處在於提供了乙個可以在em2模式下使用的leuart串列埠。這個em2模式是efm32微控制器關閉了絕大部分外設的一種低功耗模式。在這種模式下leuart串列埠的時鐘源可以被調整到32.768k時鐘晶振上。在超低功耗模式em2下,這個串列埠可以喚醒mcu,也可以直接與dma配合自動完成資料收發而不打擾mcu的睡眠。以保持更低的功耗。
下面就是usart串列埠的精要版實現**:
void setupusart(void)
這段**是usart功能的一段初始化**,可以在主程式開始後使用。其中的加粗顯示部分都是可以更改的,而且也必須要根據你選用的微控制器的具體型號和具體資源的配置的不同而改變。
這段初始化**完成後還需要注意需要補充乙個usart串列埠的接收中斷服務:
void usart1_rx_irqhandler(void)
}要注意的是這段**的函式名不可以隨便改動,和所有的cortexm3微控制器一樣。中斷處理函式的名字在startup.s檔案中已經設定好了。所以不要隨意改動。至此,在程式主while迴圈前,你就可以呼叫這段初始化**。並把中斷處理程式放在主程式之後。
efm32的usart提供了兩個庫函式可以用來傳送單位元組字元與雙位元組字元,他們分別是:
void usart_tx(usart_typedef * usart,uint8_t data ) ;
void usart_txdouble(usart_typedef * usart,uint16_t data);
用這樣的命令就可以通過usart1來傳送字元'a'了:usart_tx(usart1,0x41)。其他的usart以此類推。
在基本的串列埠收發功能調通了以後,如果要使用全功能的usart,那就要詳細參考efm32的庫函式說明,並參考efm32開發環境simplicityide中提供的例子。
efm32的庫函式參考**:
EFM32 LG232系列微控制器乾貨之LEUART
本篇文章,我們來看efm32微控制器的leuart串列埠。leuart串列埠是efm32系列單片最特色的功能之一。這個leuart的時鐘源可以在主時鐘與實時時鐘以及內部的rx時鐘三者間選擇。如果選擇了主時鐘,那leuart就和普通的uart串列埠沒區別,速度不受限制同時也沒有低功耗特性。如果選擇了外...
PIC系列微控制器
pic系列微控制器 由美國microchip公司推出的pic微控制器系列產品,首先採用了risc結構的嵌入式微控制器,其高速度 低電壓 低功耗 大電流lcd驅動能力和低價位otp技術等都體現出微控制器產業的新趨勢。現在pic系列微控制器在世界微控制器市場的份額排名中已逐年公升位,尤其在8位微控制器市...
STM32系列ARM微控制器介紹
如果你正為專案的處理器而進行艱難的選擇 一方面抱怨16位微控制器有限的指令和效能,另一方面又抱怨 32位處理器 的高成本和高功耗,那麼,基於arm cortex m3 核心的stm32系列處理器也許能幫你解決這個問題。使你不必在效能 成本 功耗等因素之間做出取捨和折衷。即使你還沒有看完stm32的產...