初入電子坑之stm32篇

2022-05-11     大方老師單片機

原標題:初入電子坑之stm32篇

初入電子坑stm32

///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以~點我頭像黑色字體加我地球呺也能領取哦。最近比較閒,帶做畢設,帶學生參加省級或以上比///

前言

可以看到,寄存器編程雖然消CPU性能少、速度快。但於我們開發應用來說,那就是刀耕火種中的刀耕火種。。。

晶片廠家也考慮到了這點,所以一般會提供一些基本的固件庫供開發人員使用stm32的爸ST公司自然也不例外。

CMSIS標準

一種內核架構通常會被多家晶片廠家採用,而晶片廠家對於晶片內部的外設布置是有差異的,這就很容易導致軟體在同內核,不同外設的晶片上移植困難。

為了解決這個問題,設計架構的公司和使用架構的晶片廠商間就會制定一個標準,讓軟體可以適配同內核不同外設的晶片的情況。

CMSIS(Cortex MicroController Software Interface Standard) ARM與晶片廠商建立的一種標準實例。

CMSIS標準其實是一個軟體抽象層。

(上圖中,黃色部分MCU硬體層面的東西,藍CMSIS層其實就是程序。)

它的內容有兩個方面:

·內核函數層:內核寄存器的名字、地址定義。ARM公司提供。

·設備外設層:片上核外外設的地址和中斷定義。有晶片生產商負責。

stm32固件庫

了解CMSIS標準後,我們就可以很愉快的stm32提供的官方固件庫找我們要的東西了。

打開固件庫文件夾我們可以看到有以下兩個文件夾:

從文件名就可以盲猜,一個CMSIS標準相關的配置文件夾,一個是相對具體型號的晶片外設配置文件夾。

CMSIS可以發現,不出所料,就是內核的配置相關配置的源文件stm3210x的時鐘配置文件還有啟動文件。

我們用的時候把它們複製到我們自己的工程里即可。

然後去隔 STM32F10x_StdPeriph_Driver文件夾瞄瞄,這個就很簡單粗暴了,一incinclude)、一srcsource)。

隨便點進去就會發ST官方按照不同的外設模塊stm32f10x_xxx.c的方式給分門別類的放好了。(見下圖)

既然東西齊活了,下面就可以先愉快的建個固件庫工程模板,然後正式開啟固件庫編程之旅~

下面結合實例敘述固件庫的編程方式。

實例:按鍵控LED

首先,讓我們回憶一下,點燈的流程:

·GPIO口時鐘使能

·初始GPIO

·選擇引IO口引腳

·並選擇需要IO模式

·設置對IO口的位值

如果有按鍵開關的話就是,就加上以下流程:

·判斷讀取開關對IO口的值IDR寄存器里)

·根據判斷情況做相應的動作

庫函數運用

上述流程動作,固件庫全都是給我們安排得妥妥,直接調用相關函數就可以了。

具體的相關函數都在對應外設的頭文件最下面,如我們即將使用GPIO:

從上面兩圖可以看到:

·想要什麼基本操作?去對應外設的庫頭文件找啊!

·函數參數怎麼用?直接去找源碼看定義啊!

·不知道函數功能是啥?直接看源碼注釋啊

文章來源: https://twgreatdaily.com/zh-hk/8b42f803767f96f1c00ce59e09abc792.html