目前單片機是以默認内部高速時鐘在進行運行,此内部時鐘RCH是8Mhz,我們在學習這篇端口操作時,先不進行系統時鐘的配置。
我們先熟悉在單片機的IO口操作,等到我們講解到定時器驗證之後,再講解單片機内部時鐘配置,就有了可以驗證,是否正确配置的手段和方法了。
3.1,端口操作流程,LED的點亮
我們選擇的這款單片機HC32L176/HC32L196系列單片機是M0 内核,有很多的端口都是多種功能複用,所以在進行端口操作的時候,需要明确是否有複用功能。我們使用普通的端口功能過程,對下列寄存器進行講解和配置。
第一步,配置GPIO時鐘,這個時鐘寄存器在芯片資料的系統控制器章節,如下圖所示
第二步,配置GPIO是數字端口還是模拟端口。使用的寄存器是下圖中所示
如何确定是數字端口還是模拟端口呢?如下圖所示,ADC,LCD,OPA,DAC等都是模拟端口,如端口隻有1/0邏輯電平的,就是數字端口,如PWM,按鍵輸入,輸出高低電平等。
下圖單片機的時鐘樹結構,我們在學習STM32的時候,總結的經驗就是時鐘樹非常重要,所以大家也要對這款有所了解,STM32對每個GPIOA-F都有單獨的時鐘控制,華大的這款,所有的GPIO隻有這一個。大家區别一下。
第三步,配置GPIO輸入輸出模式,如下圖所示。
還有複用功能的配置寄存器,因為有很多端口有其他功能,而且每個端口都有一個配置項,如ADC,串口等,可以根據你設計需要選擇對應功能,注意LCM的端口複用配置是其他專用寄存器進行配置
在上圖中,我舉例截圖了PA的配置說明,每個端口的配置具體的複用說明會有差異,将PA02_SEL配置為00,就是普通端口,在截圖當中的紅色标注當中,如果将PA02_SEL配置為1,則是UART1_TXD引腳
3.2,端口輸入與輸出配置初始化的代碼,我們以PC13這個端口作為LED控制,配置一個輸出代碼。如下圖所示,一般有兩種寫法,因為華大本身的.H文件對各個寄存器的位都有定義,有時候記不清想要配置的位的标号,所以為了方便和簡單明了,将主要是以第二種寫法進行講解。
為了能夠方便調用LED的輸出高電平和低電平,我們寫入兩個宏定義
LED硬件,假設LED燈的正極直接接單片機的IO端口。
接下來就是完整的點亮一顆LED神燈,循環不斷的控制LED引腳高低電平翻轉,等同于學C語言的hello world,下圖就是工程代碼,添加了簡單的延時函數,歡迎鑒賞。
3.3,端口的操作控制,按鍵的輸入采集,其實和輸出差不多,隻是将方向寄存器改為輸入即可,我們使用PE02作為按鍵輸入口,并定義一個宏。
硬件電路上,我們設定KEY默認上拉電阻,未按下時高電平,按下按鍵時,為低電平。
我們設計一段代碼,進行按鍵和LED端口初始化後,按鍵按下,LED點亮,按鍵松開,LED滅
歡迎大家關注我,謝謝大家!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!