摘要:Arduino開發板常用的芯片是Atmel公司生產的AVR微控制器系列。最常見的是ATmega328P,被廣泛用于Arduino Uno開發板。使用Arduino平臺開發AVR的單片機非常方便。ArduinoIDE提供了一個非常簡潔、易于使用的開發環境,使編寫和上傳代碼變得簡單。它提供了一套簡化的函數庫和API,使開發者可以輕松地與ATmega328P的硬件進行交互,無需深入了解底層的寄存器操作。但是Arduino也可使用寄存器開發。
一、使用Arduino點燈
使用ArduinoIDE開發AVR的ATmega328P單片機非常方便。在官網下載ArduinoID后,使用IDE自帶的實例就可以玩耍了。
//thesetupfunctionrunsoncewhenyoupressresetorpowertheboard voidsetup(){ //initializedigitalpinLED_BUILTINasanoutput. pinMode(LED_BUILTIN,OUTPUT); } //theloopfunctionrunsoverandoveragainforever voidloop(){ digitalWrite(LED_BUILTIN,HIGH);//turntheLEDon(HIGHisthevoltagelevel) delay(1000);//waitforasecond digitalWrite(LED_BUILTIN,LOW);//turntheLEDoffbymakingthevoltageLOW delay(1000);//waitforasecond }
這樣看起來非常簡單,這跟學習STM32單片機完全不一樣,可能大家一聽你是玩Arduino的就覺得那玩意太垃圾了。其實這個單片機也有高大上一點的玩法。
二、AVR單片機IO操作步驟
在玩AVR的ATmega328P之前先了解一下AVR單片機。AVR的IO端口是標準的雙向口,在復位時所有端口處于高阻態,AVR的每個端口對應三個寄存器,即DDRx,PORTx,PINx。在使用AVR單片機之前,一定要根據引腳功能對相應的端口初始化,否則,端口很可能不能正常工作。當單片機的引腳作為通用數字I/O口使用時,每個引腳都具有3個寄存器位:DDRxn、PORTxn、PINxn。
DDRxn | PORTxn | PINxn | I/O | 上拉電阻 | 說明 |
---|---|---|---|---|---|
0 | 0 | -- | 輸入 | 無 | 高阻態 |
0 | 1 | -- | 輸入 | 有 | 帶上拉電阻 |
1 | 0 | -- | 輸出 | 無 | 輸出低電平 |
1 | 1 | -- | 輸出 | 無 | 輸出高電平 |
AVR單片機中對IO口進行操作之前需要進行相應的初始化設置,其設置步驟如下:
1 通過方向寄存器DDRx設置相應的端口為輸入或者輸出。
2 如果設置為輸出的話,把需要輸出的數據送往數據寄存器PORTx。如果設置為輸入的話,從輸入寄存器PINx中讀取外部的輸入值,同時可以通過設置PORTx來設置相應的引腳是否需要上拉電阻。
三、使用Atmel Studio點燈
Atmel Studio是Atmel(現在是Microchip)公司推出的一款集成開發環境(IDE),專門用于嵌入式系統的開發。提供了豐富的工具和功能,以支持Atmel微控制器的編程、調試和部署。Atmel Studio支持多種編譯器,包括GCC和IAR編譯器,可用于生成最優化的代碼。支持多種編程語言,包括C、C++和匯編語言。開發者可以根據自己的需求選擇最合適的編程語言來編寫他們的應用程序。
首先在官網下載Atmel Studio的安裝包,由于Atmel被Microchip收購了,所以Atmel Studio也更名為Microchip Studio,它整合了Atmel Studio的功能,并擴展支持了更多Microchip微控制器系列,包括PIC和dsPIC系列。Atmel Studio和Microchip Studio都是用于微控制器應用程序開發的IDE。Atmel Studio主要針對Atmel微控制器,而Microchip Studio則擴展了支持更多的Microchip微控制器系列。
下載之后傻瓜式安裝就可以了。安裝完成的界面如下,看著是不是夠很熟悉。Atmel Studio和Visual Studio在界面和功能上有很多相似之處,這是因為Atmel Studio是基于Visual Studio Shell開發的。它們的主要區別在于針對的目標平臺和硬件。Atmel Studio專注于Atmel微控制器的開發,而Visual Studio是一個通用的開發環境,可用于各種應用程序的開發。因此,如果你已經熟悉Visual Studio,切換到Atmel Studio會相對容易,因為它們之間有很多共享的特性和工作流程。
3.1 新建工程
/* *GccApplication1.c * *Created:2023/5/18/星期三1419 *Author:LiuYao *Board:ArduinoNano */ #ifndefF_CPU #defineF_CPU10000000UL #endif #include#include intmain(void) { DDRB=(1<
3.2 工具配置
Atmel Studio沒有原生支持Arduino的開發,需要進行設置,本文使用的板子為ArduinoUNO,單片機型號為ATmega328P,注意在新建工程的時候要選對型號。
打開以后關鍵點是填寫下面三個選項,同時需要勾選Use Output window。
Title:Arduino UNO(隨意填寫)
Command:D:SoftwareArduinohardware oolsavrinavrdude.exe,這個路徑為ArduinoIDE中avrdude.exe的路徑,根據自己的路徑填寫。
Arguments:這里填寫要注意串口號,我這里是COM7,根據自己板子識別填寫正確的COM號。
-C"D:SoftwareArduinohardware oolsavretcavrdude.conf"-v-patmega328p-carduino-PCOM7-b115200-D-Uflash"$(ProjectDir)Debug$(TargetName).hex":i
Arguments參數解釋如下:
Usage:avrdude.exe[options] Options: -pRequired.SpecifyAVRdevice. -b OverrideRS-232baudrate. -B SpecifyJTAG/STK500v2bitclockperiod(us). -C Specifylocationofconfigurationfile. -c Specifyprogrammertype. -DDisableautoeraseforflashmemory -i ISPClockDelay[inmicroseconds] -P Specifyconnectionport. -FOverrideinvalidsignaturecheck. -ePerformachiperase. -OPerformRCoscillatorcalibration(seeAVR053). -U :r|w|v: [:format] Memoryoperationspecification. Multiple-Uoptionsareallowed,eachrequest isperformedintheorderspecified. -nDonotwriteanythingtothedevice. -VDonotverify. -uDisablesafemode,defaultwhenrunningfromascript. -sSilentsafemodeoperation,willnotaskyouif fusesshouldbechangedback. -tEnterterminalmode. -E [, ]Listprogrammerexitspecifications. -x Pass toprogrammer. -yCount#erasecyclesinEEPROM. -Y Initializeerasecycle#inEEPROM. -vVerboseoutput.-v-vformore. -qQuellprogressoutput.-q-qforless. -llogfileUselogfileratherthanstderrfordiagnostics. -?Displaythisusage.
3.3 編譯和燒寫程序
首先編譯工程。
將Arduino UNO連接到電腦,去Tools中點擊剛設置的配置Arduino UNO。
這個時候就可以把程序燒寫到Arduino中了,output窗口會輸出下面的內容。
如果報錯,需要考慮一下上面提到的路徑是不是正確還有COM端口號。
注:通過Atmel Studio這個方式不能為Arduino Nano板子下載程序,因為Arduino Nano板子大多數用的是Old Bootloader,如果使用這種方式會下載失敗。
試驗現象
下次有人問你玩啥單片機時候你要說:我不玩Arduino,我玩AVR的,和你的ARM一樣。
審核編輯:湯梓紅
-
單片機
+關注
關注
6035文章
44554瀏覽量
634653 -
寄存器
+關注
關注
31文章
5336瀏覽量
120231 -
STM32
+關注
關注
2270文章
10895瀏覽量
355743 -
開發板
+關注
關注
25文章
5032瀏覽量
97375 -
Arduino
+關注
關注
188文章
6468瀏覽量
186956
原文標題:我玩Arduino,但我使用寄存器開發
文章出處:【微信號:果果小師弟,微信公眾號:果果小師弟】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論