




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、GPIO與第一個例程1主要內容:4.1 通用I/O接口基本概念及連接方法4.2 端口控制模塊與GPIO模塊的編程結構4.3 GPIO驅動構件封裝方法與驅動構件封裝規范4.4 第一個C語言工程:控制小燈閃爍4.5 工程文件組織框架與第一個C語言工程分析4.1 通用I/O接口基本概念及連接方法 1. I/O接口的概念 I/O接口,即輸入輸出接口,是微控制器同外界進行交互的重要通道,實現MCU與外部設備的數據交換。 在嵌入式系統中,接口種類繁多,有顯而易見的人機交互接口,如操縱桿、鍵盤、顯示器;也有無人介入的接口,如網絡接口、機器設備接口 2.通用I/O(GPIO) 所謂通用I/O,也記為GPIO(
2、General Purpose I/O),即基本的輸入/輸出,有時也稱并行I/O,或普通I/O,它是I/O的最基本形式。MCU內部程序可以對通用I/O的端口寄存器進行讀寫來實現開關量的輸入輸出操作,且大多數通用I/O引腳可以通過編程來設定其工作方式為輸入或輸出,稱之為雙向通用I/O。2 3.上拉下拉電阻與輸入引腳的基本接法 輸入引腳有三種不同的連接方式:帶上拉電阻的連接、帶下拉電阻的連接和“懸空”連接。 若MCU的某個引腳通過一個電阻接到電源(Vcc)上,這個電阻被稱為“上拉電阻”。與之相對應,若MCU的某個引腳通過一個電阻接到地(GND)上,則相應的電阻被稱為“下拉電阻”。懸空的芯片引腳被上
3、拉電阻或下拉電阻初始化為高電平或低電平。3 4.輸出引腳的基本接法 作為通用輸出引腳,MCU內部程序向該引腳輸出高電平或低電平來驅動器件工作,即開關量輸出。如圖所示。其中O1引腳是發光二極管LED的驅動引腳,當O1引腳輸出高電平時,LED不亮;當O1引腳輸出低電平時,LED點亮。O2引腳接蜂鳴器驅動電路,當O2腳輸出高電平時,蜂鳴器響;O2腳輸出低電平時,蜂鳴器不響。45相關名詞解釋(1)模擬引腳是指不能夠配置成GPIO的引腳叫做模擬引腳(Analog pin),如RESET、EXTAL及XTAL等引腳。(2)數字引腳是指能夠被配置成GPIO的引腳叫做數字引腳(Digital pin)。(3)
4、無源濾波器(Passive filter)是由電容器、電抗器和電阻器適當組合而成,并兼有無功補償和調壓功能的濾波器。(4)引腳驅動能力(Drive Strength)是指引腳放出或吸入電流的承受能力,一般用mA單位度量。(5)轉換速率(Slew rate)是指電壓在高低電平間轉換的時間間隔,一般用ns單位度量。(6)數字輸入/輸出(Digital input/output)是指芯片引腳只能輸入/輸出高電平(邏輯1)和低電平(邏輯0)兩個電壓值。(7)引腳復用槽(Pin muxing slot)是指信號復用裝置與引腳之間的接口,引腳通過連接不同的信號復用槽可以配置成不同的功能。5 3引腳控制寄存
5、器(PORTx_PCRn) 每個端口的每個引腳均有一個對應的引腳控制寄存器,可以配置引腳中斷或DMA傳輸請求,可以配置引腳為GPIO功能或其他功能,可以配置是否啟用上拉或下拉,可以配置選擇輸出引腳的驅動強度,可以配置選擇輸入引腳是否使用內部濾波等。6 其中“X”表示復位后狀態不確定。 4全局引腳控制寄存器 每個端口的全局引腳控制寄存器有兩個,分別為PORTx_GPCLR、PORTx_GPCHR,為只寫寄存器,讀出總為0。每個寄存器的高16位被稱為全局引腳寫使能字段(Global Pin Write Enable,GPWE),低16位被稱為全局引腳寫數據字段(Global Pin Write D
6、ata,GPWD)。 KL25芯片每個端口有32個引腳控制寄存器,分為兩組:低引腳控制寄存器組(150)和高引腳控制寄存器組(3116),全局引腳控制寄存器PORTx_GPCLR批配置低引腳控制寄存器組(150),而全局引腳控制寄存器PORTx_GPCHR配置高引腳控制寄存器組(3116)。這樣可以實現一次配置16個功能相同的引腳,提高了編程效率。 全局引腳控制寄存器不能配置引腳控制寄存器的高16位,因此,不能使用該功能配置引腳中斷。7 5中斷狀態標志寄存器(PORTx_ISFR) 數字引腳模式下,每個引腳的中斷模式可以獨立配置,在引腳控制寄存器IRQC字段可配置選擇:中斷禁止(復位后默認);
7、高電平、低電平、上升沿、下降沿、沿跳變觸發中斷;上升沿、下降沿、沿跳變觸發DMA請求。支持低功耗模式下喚醒。 每個端口的中斷狀態標志寄存器(PORTx_ISFR),對應32個引腳,相應位為1,表明配置的中斷已經被檢測到,反之沒有。各位具有寫1清0特性。84.2.2 GPIO模塊 1KL25的GPIO引腳 80引腳封裝的KL25芯片的GPIO引腳分別記為PORTA、PORTB、PORTC、PORTD、PORTE共5個端口,共含61個引腳。端口作為GPIO引腳時,邏輯1對應高電平,邏輯0對應著低電平。 (1)PORTA口有10個引腳,分別為PTA12、PTA45、PTA1217; (2)PORTB
8、口有12個引腳,分別為PTB03、PTB811、PTB1619; (3)PORTC口有16個引腳,分別為PTC013、PTC1617; (4)PORTD口有8個引腳,分別為PTD07; (5)PORTE口有15個引腳,分別為PTE05、PTE2025、PTE2931。9 2.GPIO寄存器 每個GPIO口均有6個寄存器,5個GPIO口共有30個寄存器。PORTA、PORTB、PORTC、PORTD、PORTE各口寄存器的基地址分別為400F_F000h、400F_F040h、400F_F0080h、400F_F0C0h、400F_F100h,所以各口基地址相差40h。 各GPIO口的6個寄存器
9、分別是數據輸出寄存器、輸出置1寄存器、輸出清0寄存器、輸出反轉寄存器、數據輸入寄存器、數據方向寄存器。其中輸出寄存器的地址就是口的基地址,其他寄存器的地址依次加4。所有寄存器均為32位寬度,復位時均為0000_0000h。10 其他各口功能與編程方式完全一致,只是相應寄存器名與寄存器地址不同,其中寄存器名只要把其中的PORTA口“A”子字母分別改為B、C、D、E即可獲得,地址按上述給出的規律計算。11內存映射與寄存器定義:KL25參考手冊中文版P559124.2.3 GPIO基本編程步驟與舉例 1.GPIO基本編程步驟要使芯片某一引腳為GPIO功能,并定義為輸入/輸出,隨后進行應用,基本編程步
10、驟如下:(1)通過端口控制模塊(PORT)的引腳控制寄存器PORTx_PCRn的引腳復用控制字段(MUX)設定其為GPIO功能(即令MUX=0b001);(2)通過GPIO模塊相應口的“數據方向寄存器”來指定相應引腳為輸入或輸出功能。若指定位為0,則為對應引腳輸入;若指定位為1,則為對應引腳輸出。(3)若是輸出引腳,則通過設置“數據輸出寄存器”來指定相應引腳輸出低電平或高電平,對應值為0或1。亦可通過“輸出置位寄存器”、“輸出清位寄存器”、“輸出取反寄存器”改變引腳狀態,參見表4-1中關于寄存器的說明。(4)若是輸入引腳,則通過“數據輸入寄存器”獲得引腳的狀態。若指定位為0,表示當前該引腳上為
11、低電平;若為1,則為高電平。134.4 第一個C語言工程:控制小燈閃爍 本書用KL25控制發光二極管指示燈的例子開始程序之旅,程序中使用了GPIO驅動構件來編寫指示燈程序。當指示燈兩端引腳上有足夠高的正向壓降時,它就會發光。在本書的工程實例中,燈的正端引腳接KL25的GPIO口,負端引腳通過電阻接地。當在I/O引腳上輸出高或低電平時,指示燈就會亮或暗。FRDM-KL25Z硬件板上有個三色燈,PORTB18=紅燈、PORTB19= 綠燈。1415官方例程文件結構,其中config files文件夾里包含RAM 和ROM的配置文件,platinum為飛思卡爾官方演示例程。16雙擊打開make_ne
12、w_project.exe文件,出現如下界面,該界面調用腳本語言創建一個新的IAR工程17輸入新建的工程名:test18點擊回車后,出現如下界面。提示“project test successfully created. Press Enter to exit.”說明新工程創建成功。19按“回車”退出創建環境后,我們發現新工程已經創建完成,如圖中藍色選中文件夾20雙擊打開“test”文件夾,其中“test.eww”是IAR的工程文件,如果已經成功安裝IAR,就顯示為IAR的小圖標,雙擊打開21打開后,系統提示該工程包含未知工具,點擊“確定”,不用理會該提示22我們看IAR左側,workspac
13、e欄,其中有兩個工程,一個是“xx_freedom”另一個是“xx_tower”,這里我們用的FRDM開發環境,因此刪除“xx_tower”工程23在“xx_tower”上右擊,選擇remove,彈出如下對話框,點擊確定,刪除成功24在workspace中,找到project,點擊“+”展開目錄,雙擊打開test.c,即可看見主函數main()25OPEN SDA查看版本1.開發板的SDA Connector連接電腦USB接口,在“我的電腦”將會出現一個“FRDM-KL25Z”盤26OPEN SDA查看版本2.打開“FRDM-KL25Z”盤,即可看到下圖所示的文件,打開SDA_INFO.HTM
14、文件,即可查看到Bootloader信息27OPEN SDA升級1.下載相關APP和驅動通過上一步的查看OpenSDA信息,注意在下方有“OpenSDA Firmware (MSD & Debug)”和“Windows USB Drivers”,下載“Firmware Apps ”和“ PEDrivers_install.exe ”,注意這個需要在pemicro網站注冊才能下載哦,不想注冊下載的可以查看下面附件下載,如圖紅圈所示28OPEN SDA升級2.下載好驅動,為了更新Bootloader請先閱讀BOOTUPDATEAPP_release_notes并按如下步驟操作:進入Bootload
15、er模式(按住復位鍵,用USB線將開發板的OpenSDA接口與電腦連接,釋放復位鍵)將BOOTUPDATEAPP.SDA放進Bootloader盤(該文件在OpenSDA_Bootloader_Update_App_v111_2013_12_11壓縮包內)29OPEN SDA升級拔掉再插上OpenSDA以啟動Bootloader升級。該升級過程最長15秒,一般3秒內搞定一旦升級結束,OpenSDA將自動進入Bootloader模式、綠色小燈將秒頻率閃爍運行Bootloader 盤中SDA_INFO.HTM文件即可從網頁上看到自己開發板OpenSDA的Bootloader 已經升級到了版本1.1
16、1303.將1.14版OpenSDA固件程序MSD-DEBUG-FRDM-KL25Z_Pemicro_v114.SDA放入Bootloader314.拔掉再插上OpenSDA就能看到127MB大小、名為FRDM-KL25Z的盤(該狀態就是可以Deubg,也可以往里丟.srec文件的OpenSDA最新狀態)32在設備管理器中可以看見OPENSDA33回到test.c主函數main(),里面已經有官方寫好的小程序用于實現串口收到什么就發送什么。不需使用刪除即可34觀察芯片手冊中,引腳復用說明表,下表列出每個引腳可以復用的功能從alt0-alt735找到和LED相連的PTB18和PTB19引腳,觀察
17、他們的復用功能,可以看出,它們能用來作為通用IO、觸摸通道、TPM通道36打開B端口模塊的時鐘37查看GPIOx_PDDR寄存器,0為輸入,1為輸出,配置PTB18、PTB19為輸出38在GPIOx_PDOR寄存器中,相應為寫入1,對應引腳輸出高電平;寫入0,對應引腳輸出低電平39GPIOx_PSOR相應為寫0不改變輸出引腳狀態,寫1將輸出高電平40GPIOx_PCOR相應為寫0不改變輸出引腳狀態,寫1將輸出低電平41三色LED電路連接圖Red-PTB18Green-PTB19Blue-PTD142該函數實現三色LED三種顏色的交替閃爍步驟:打開引腳時鐘選擇引腳復用配置輸入輸出方向控制高低電平
18、變化43改變三色LED三種顏色的交替閃爍頻率For循環控制了,每種LED亮滅的時間,改變For循環的循環次數即可改變閃爍頻率4.5.3 機器碼文件.hex(Intel HEX)文件是由一行行符合Intel HEX文件格式的文本所構成的ASCII文本文件,在Intel HEX文件中,每一行包含一個HEX記錄,這些記錄由對應機器語言碼(含常量數據)的十六進制編碼數字組成。44 1記錄格式 .hex文件中的語句有六種不同類型的語句,但總體格式是一樣的,如下表45 2實例分析 以KL25-Light工程中的KL25prg.hex為例,進行簡明分析。截取第一個實例工程的“.hex”文件的部分行進行分解,
19、 (1)分析第1行,以“:”開始,長度為“0 x10”(16個字節),“0000”表示相對地址,緊接著的“00”代表記錄類型為數據類型,接下來的就是數據段“0030002005060000550A00005D0A0000”,該數據段存放在偏移地址為“0000”的存儲區的機器操作碼,也就是說,只有這些數據被寫入到Flash存儲區。46 這里的hex文件中,數據部分是以“小端”的方式存儲的,在這種格式中,字的低字節存儲在低地址中,而字數據的高字節存放在高地址中,第1個4字節“00 30 00 20”,實際表示的數據內容為“20 00 30 00”,就是堆棧棧頂(=RAM最高地址+1),這4個字節也
20、就是中斷向量表中開始內容(占用了0號中斷位置),其內容在MCU啟動時被放入堆棧寄存器SP中。 接下來的4個字節 “05 06 00 00” “00 00 06 05”(參見第45行),占用中斷向量表1號中斷位置,其內容其內容在MCU啟動時被放入程序堆棧計數器PC中,也就是開始執行代碼的存放處,即為啟動函數Startup在Flash中存放的開始地址(可以從“.map”文件、“.lst”文件找到相應信息進行理解)。 (2)從第1行后半部開始至12行,是中斷向量表,從第13行開始是程序記錄。 (3)第220行(最后一行)為文檔的結束記錄,記錄類型為“0 x01”;“0 xFF”為本記錄的校驗和字段內
21、容。474.5.4 其他相關文件功能簡介 1中斷向量及服務例程文件(vector.h、vector.c、isr.h、isr.c) 位于“.CPU”文件夾下的vector.h、vector.c文件及“.Sources”文件夾下的isr.h、isr.c文件是中斷處理相關文件. 2啟動文件(startup.c) 啟動文件一般不需修改。該文件位于 “.Project_SettingsStartup_Code”文件夾下,是CW10.3環境下KL25工程啟動文件。在startup.c文件中給出了startup函數源代碼。48 3總頭文件與主程序文件(includes.h、main.c) 總頭文件includes.h是main.c使用的頭文件,內含外部函數引用、常量、全局變量聲明以及外部變量引用。main.c文件是工程任務的核心文件,main函數即在該文件中實現。在main函數中包含了一個永久循環,對具體事務過程的操作幾乎都是添加在該主循環中,含有操作系統下編程的調度作用。 4內核及芯片頭文件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 繪畫合伙人合同協議書
- 2025實習生勞動合同模板
- 2025企業租賃辦公樓合同協議樣本
- 2025版本的合肥市房地產買賣合同
- 合伙人買車合同協議書
- 2025店鋪租賃合同范本下載
- 2025貨運服務合同范本
- 2025有關版權轉讓合同模板
- 音響樂器租賃合同協議書
- 餐飲員工入股合同協議書
- 康養休閑旅游服務基礎知識單選題及答案解析
- 新課標(水平三)體育與健康《籃球》大單元教學計劃及配套教案(18課時)
- 解剖學公開課課件內分泌
- 銀屑病臨床病例討論
- 【MOOC】工程經濟學原理-東南大學 中國大學慕課MOOC答案
- 涉密人員審查備案登記表
- 2023-2024學年廣東省深圳市深中共同體聯考八年級(下)期中地理試卷
- 高層建筑汽車吊吊裝作業方案
- 24秋新人教版地理七年級上冊大單元整體設計-第四章 天氣與氣候課件
- 大學生創新創業基礎(創新創業課程)完整全套教學課件
- CJJ/T47-2016生活垃圾轉運站技術規范
評論
0/150
提交評論