EFM32片內外設–RMU基本操作

造成MCU複位的原因,想必很很多。但是如何找到是何原因造成的複位,有時候卻並不好找。EFM32提供了RMU的模組,全稱為Reset Magagement Unit,複位嵌入式管理單元。利用這個單元,就可以很方便的找到複位的原因了。在MCU啟動並執行過程當中,RMU會一直不停的檢測各種複位源,例如POR Power-on Reset上電複位,BOD Brown-out

EFM32片內外設–LEUart抖動誤差

繼續使用上次的Demo,我們來申明一個LEUart的問題。硬體準備: TG STK, LEUart0, Tx:PD4, Rx:PD5.  TG STK的20pin擴充口上已經有這兩個IO口,分別是12Pin(PD4),14Pin(PD5)。軟體準備:我們簡化一下上次的常式,僅僅讓LEUart發送0x01.#include <stdint.h>#include <stdbool.h>#include "efm32.h"#include

EFM32片內外設–USART之UART誤碼率計算

在做UART功能之前,必定會面對一個問題, 在我目前的時鐘頻率下,我應該用何種傳輸速率是最合適的?誤碼率是最低的。針對EFM32,UART的過採樣可以配製成4, 6, 8, 16次, 而分頻係數為15bit,前13bit為整數,後2bit是小數位。總體的計算公式如下:USARTn_CLKDIV = 256 x ((fHFPERCLK/(oversample x brdesired)) -

M32片內外設–DBG之Keil SWO輸出

原始的資料,請參看Energymicro support上的文章。連結地址如下:http://support.energymicro.com/entries/20294061-swo-printf-in-keil 1) 加入stdio.h,這樣你就可以調用printf函數了2) 使能SWO輸出使能SWO輸出。最簡單的辦法就是將如下的函數拷貝到你的工程裡面,並且在mian函數初始化之後調用該函數。void setupSWO(void){uint32_t *dwt_ctrl = (uint32_t

EFM32片內外設–ADC Single 通道切換常式

EFM32目前ADC的工作方式有兩種,一種是single模式,一種是Scan模式。Single模式是單通道轉換模式,Scan是多通道轉換模式。在Single模式中,由於是單通道應用,因此就會遇到如何切換ADC通道的問題。以下是一個在ADC Single 模式下切換ADC通道的常式。硬體準備:TG STK, 會將ADC轉換的值顯示在LCD段碼屏上。軟體常式:#include <stdio.h>#include "efm32.h"#include "em_chip.h"#include

EFM32片內外設–LCD之動畫

一直知道EFM32的LCD Controller支援簡單的動畫效果,而不需要MCU去參與。但是一直沒有時間來給這個功能做一個總結。抽空總結一下,因此在TG STK的基礎上,詳細的說明一下,免得自己時間久了忘記。最終的效果如下: 注:Gecko顯示不全,是因為PE13被我斷開了了。用來測試EM4 GPIO喚醒用了。 LCD Controller控制器支援動畫狀態機器,可以在低功耗狀態下,自動更新LCD的顯示介面,而無需MCU幹預。但是LCD Controller並不能將所有的LCD

EFM32片內外設–GPIO EM4喚醒

EFM32的EM3雖然功耗很低,0.6uA,但是在一些場合仍然顯得浪費,特別是那種一次性消費的電池供電產品,客戶的想法仍然是越低越好,最好是不耗電。所以,很多時候,就只能讓MCU進入EM4狀態。當EFM32進入EM4狀態之後,片內的幾乎所有模組都掉電了,只有特殊的的幾個GPIO口以及外部Reset引腳才能喚醒。那幾個特殊的GPIO口就是具有EM4喚醒的引腳,例如PF2,PE13等等。另外,軟體也可以配置GPIO口喚醒的極性,例如下降沿喚醒,以及上升沿喚醒等。這些由GPIO_EM4WUPOL寄存器

EFM32片內外設–LCD Bitband操作

前日,在看官方的TG STK 的LCD的常式時,才發現程式寫的似乎是有一些難懂。雖然知道他是將每個8字或則米字的Com和Segment抽出來,組成一個數組,該數組叫做const MCU_DISPLAY EFM_Display。以其中的米字為例來說,他為米字的每個Segment定義了所屬的Com,以及Segment的具體bit。因為TG STK上總共有7個米字,因此他定義了CHAR_TypeDef   

EFM32片內外設–LETimer Free Mode

/***************************************************LETimer應用樣本1: LETimer Free Mode硬體環境: TG840 STK                      LED燈 - PD7                       LETimer0, Clock source: LFRCO軟體環境: IAR 6.30效果:          LED燈1秒閃爍一次*******************************

EFM32片內外設–MSC Device information

每一片EFM32,內部都有一個唯一ID號。而這個號碼是存在一個特殊的flash頁裡面的。我們稱之為Device infromation頁。在Device infromation頁裡面不僅僅有唯一的ID號,而且有ADC,DAC,HFRCO等等模組的校正值,以及器件的型號和晶片的版本號碼等。以下就是經常用到的幾個參數。這裡有函數的形式進行訪問。將來再慢慢的增加。//讀取器件的家族類型//71:Gecko, 72: Gaint Gecko, 73:Tiny Gecko, 74:Leopard

EFM32片內外設–RTC+EM3

在接觸下來的大多數低功耗系統中,客戶一般都會將EFM32設定到EM2的模式,並且在EM2模式下,設定一個RTC或者LETimer。用於周期性的喚醒MCU來處理一些響應。但是如果這個定時的時間是一個不太精確的時間間隔的話,我們甚至可以使用ULFRCO作為這個定時時鐘,進而可以將MCU進入EM3的狀態。查看TG,LG,GG的時鐘樹可以知道,LFA,LFB是可以選擇ULFRCO的,而Gecko卻不可以。因此這個Demo不支援Gecko。而查看在Reference

EFM32片內外設–VCMP 基本操作

VCMP基本操作常式,是從Application Note中摳出來的。#include "stdio.h"#include "efm32.h"#include "em_cmu.h"#include "em_vcmp.h"#include "em_gpio.h"unsigned char VCMP_Voltage_Get_Level(void){    CMU_ClockEnable(cmuClock_CORELE, true);    /* Initialize VCMP */   

Cortex-M3 Core之指令

1. __DSB()指令: Data Synchronization Barrier, This function acts as a special kind of Data Memory Barrier.  It completes when all explicit memory accesses before this instruction complete.執行個體(Timer的時鐘源頻率低於MCU主頻):void TIMER0_IRQHandler(void){     /*

EFM32片內外設–ADC之多通道採樣+Timer+PRS觸發+DMA

在Application note中,ADC已經有了很多的例子,唯獨缺少一個多通道定時觸發進行掃描的常式。從理論上講,將ADC配置為多通道ADC轉換,配合DMA進行資料轉送,而且使用Timer+PRS的方式,進行自動觸發,這個功能應該是完全OK的。但是只是缺少一個常式,以及自行研究的過程。首先配置ADC。將ADC配置為多通道採樣,常式中將ADC配置為通道2~通道4輸入,唯一不一樣的就是需要使能PRS,因為PRS需要將Timer與ADC相串連,這樣的話,Timer就能通過PRS來觸發ADC掃描了。

EFM32片內外設–USART UART TX+DMA

硬體準備:TG STK , 將20pin 擴充口的4腳與6腳相串連。第4腳為PD0,Tx, 第6腳為PD1,Rx。軟體流程:UART配置完畢之後,在主函數中不停的觸發TX的DMA傳輸,總共傳輸12個位元組的資料,0~9, '\n' , '\r'。 Rx採用普通中斷來做。 #include <stdint.h>#include <stdbool.h>#include "efm32.h"#include "em_chip.h"#include

EFM32片內外設–TFT 漢字字型檔(續)

紀念母親節。繼上次研究完漢字的編碼以及如何產生字型檔之後,那麼現在要做的就是如何將漢字顯示在點陣屏上了。目前EFM32帶點陣的也就DK系列,帶有320*240的TFT屏了。因此本實驗就是拿GG DK來做的。在哪個平台上跑得不重要,關鍵是如何做的。1.還記得我們上次的字型檔點陣的模數方式嗎? 這和我們最終寫代碼,如何顯示是有關係的。目前還是採用方式一模數產生的字元庫。2.

EFM32外設–DMA之SPI+DMA

在很多時候,如果使用DMA來做一些資料轉送的話,效率會高很多.舉例來說,讀寫SPI.硬體準備:使用TG STK, 因為軟體沒有使用loopback模式,因此,需要將TG STK 20PIN擴充口的第4腳和第6腳短接.軟體準備:Tx的緩衝區為:ucSPITxBuffer[] , Rx的緩衝區為:ucSPIRxBuffer .  軟體裡使用了兩個通道的DMA, 對應SPI的發送和接收. 針對SPI的發送,

EFM32片內外設–GPIO之SWD介面複用

EFM32的Debug介面,使用的是SWD介面,即兩線制的JTAG介面,兩個訊號線分別是SWCLK,SWDIO。SWCLK預設為內部下拉,SWDIO預設為內部上拉。如果想將這兩個口複用成GPIO口的話,則需要修改GPIO->Route寄存器。關閉相應的複用功能。常式:關閉SWD介面,並且設定為GPIO輸出功能。#include <stdint.h>#include <stdbool.h>#include "efm32.h"#include

小型單詞統計程式

使用VC6.0編譯通過的 程式採用的是自頂而下的過程式編程,用動態數組來儲存單詞。對於字串的讀取則是採用一個一個的從檔案中讀取出來,並且同時對他們進行判斷,看是否是字母、‘-’、‘'‘;如果是則儲存在字串中,如果遇到不是,則加入字串結束符並且對整個字串進行處理。對於字串的尋找和插入,則採用的是二分尋找和順序插入的演算法;最後利用選擇排序,選出最多的15個,並輸出到檔案中去。 //一下是程式碼#include "stdio.h"#include "stdlib.h"#include

EFM32片內外設–LEUart之基本操作

LEUart 最基本的常式:硬體準備: TG STK, LEUart0, Tx:PD4, Rx:PD5.  TG STK的20pin擴充口上已經有這兩個IO口,分別是12Pin(PD4),14Pin(PD5)。軟體常式:#include <stdint.h>#include <stdbool.h>#include "efm32.h"#include "efm32_chip.h"#include "efm32_cmu.h"#include "efm32_leuart.h"#

總頁數: 61357 1 .... 13614 13615 13616 13617 13618 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.