久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5827|回復: 0
打印 上一主題 下一主題
收起左側

關于STM32的固件庫

[復制鏈接]
跳轉到指定樓層
樓主
ID:72008 發表于 2015-1-12 19:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
為什么會有固件庫
對于51核的8位單片機我們在進行開發時,我們是直接進行配置單片機的寄存器,控制芯片的工作方式。只要我們明白寄存器各位的功能和設置方法,直接進行賦值就可以了。
不存在固件庫的問題。那么使用ARM 32位 CORTEX -M3核心的STM32芯片為什么有固件庫呢?
當然在使用STM32時也可以像51那樣脫離固件庫,自己進行配置開發。
對于SMT32因為其外設資源非常的豐富,必然帶來寄存器的數量十分龐大并且比較復雜,這時直接配置寄存器方式的就會帶來:
開發速度慢
程序可讀性差
這兩個缺陷會直接影響開發效率,程序的維護和交流。而庫開發方式能很好的彌補這兩個缺陷。
兩種思路的對比:
相對于庫開發的方式,直接配置寄存器的方式生成的代碼量的確會少一點,但是SMT32有充足的資源,權衡庫的優勢與不足,絕大部分時候,我們愿意犧牲一點資料,選擇庫開發。
一般只在對代碼運行時間要求極其苛刻的地方,才使用直接配置寄存器的方式替代。如頻繁調用中斷服務程序。
STM32結構及庫層次關系
基于CORTEX的某系列芯片采用的內核都是相同的,區別是核外的片上外設的差異,這些差異導致軟件在同內核,不同外設的芯片上移植的困難。為解決不同芯片廠商生產的CORTEX微控制器軟件的兼容性問題,ARM與芯片廠商建立了CMSIS標準。即
Cortex MicroController software Interface Standard ;CORTEX 微控制器軟件接口標準
CMSIS包括了:
內核函數層:其中包含用于訪問內核寄存器的名稱、地址定義,主要由ARM公司提供。
設備外設訪問層:提供了片上的核外外設的地址和中斷定義,主要由芯片生產商提供。
CMSIS層位于硬件層與操作系統或用戶層之間,提供了芯片生產商無關的硬件抽象層,可以為借口外設、實時操作系統提供簡單的處理器軟件接口,屏蔽了硬件差異,這對軟件的移植是有極大的好處的。
STM32的庫,就是按照CMSIS標準建立的。
固件庫主要文件說明:
-htmresc: LOGO
Libraries :   驅動庫的源代碼及啟動文件
Project :用驅動庫寫的例子個一個工程模板
Utilities:基于STM官方開發板的例子
Release_Notes.html:庫版本更新說明
stm32f10x_stdperiph_lib_um.chm:庫幫助文件
Core_cm3.c和core_cm3.h
作用:為采用CORTEX—M3核的芯片商設計的芯片外設提供一個進入M3內核的接口。
     只要是采用了M3的核,不同公司的芯片的這兩個文件是相同。
這兩個文件在我們的工程文件是不可缺少的。
System_stm32f10x.c文件
是由ST公司提供的。功能是設置系統時鐘和總線時鐘。M3比51單片機復雜的多,它不像51直接接一個8M的晶振就可以工作了,我們還要通過M3核的核內寄存器對8M的時鐘進行倍頻、分頻,或者使用芯片內部的時鐘。所有的外設都與時鐘的頻率相關,所以這個文件的時鐘配置是很關鍵的。
在實現系統時鐘的時候要用到PLL(鎖相環),這就需要操作寄存器,寄存器都是以存儲器映射的方式來進行訪問的,所以該文件中包含了stm32f10x.h這個頭文件。
Stm32f10x.h文件
是一個很重要很底層的文件
所有的處理器廠商都會將對內存的操作封裝成一個宏,即我們通常說的寄存器,并且把這些實現封裝成一個系統文件,包含在相應的開發環境中。這樣在開發自己的應用程序時只要將這個文件包含進來就可以了。
啟動文件
Libraries/CMSIS/core/CM3/startup/arm文件夾下由匯編編寫的系統啟動文件,不同的文件對應不同的芯片型號。
文件名的英文縮寫的意義如下:
Cl:互聯型產片,STM32F105/107系列
Vl: 超值型產品,STM32F100系列
Xl: 超高容量產品,STM32F101/103系列
Ld: 低密度產品,FLASH小于64K
Md: 中密度產品,FLASH=64 or 128K
Hd: 高密度產品,FLASH大于128K
啟動文件是任何處理器在上電復位后最先運行的一段匯編程序。在我們編寫的C代碼開始運行之前,需要由匯編語言為C語言的運行建立一個合適的環境,接下來才能運行我們的程序。所以要把啟動文件添加進我們的工程中去。
啟動文件的作用:
1、初始化堆棧指針SP;
2、初始化程序計數器指針PC;
3、設置堆、棧的大小
4、設置異常向量表的入口地址
5、配置外部SRAM作為數據存儲器
6、設置C庫的分支入口___main
7、在3.5版本的啟動文件中還調用了在system_stm32f10x.c文件中的SystemIni()函數配置系統時鐘,在舊的版本中需要用戶進入main函數自己調用這個函數。
Inc和src
位于libraries/STM32F10X_StdPeriph_Driver文件夾下,inc即include的縮寫,src即source的縮寫。屬于CMSIS的設備外設函數部分。這些外設是芯片制造商在M3核外加進去的。
在src和inc文件夾中是ST公司針對每個STM32外設編寫的庫函數文件,每個外設對應一個.c和.h文件。在進行開發時,可以用到那個模塊就將那兩個文件包含到工程中。
還有一個很特別的misc.c文件,這個文件提供了外設對內核的NVIC(中斷向量控制器)的訪問函數 ,在配置中斷時,必須把這個文件添加到工程中。
Stm32f10x_it.c 和 stm32f10x_conf.h文件
Stm32f10x_it.c ,專門用來編寫中斷服務函數的,在我們修改前,這個文件已經定義了一些系統異常的接口,其他的普通中斷服務函數由我們自己添加。這些中斷函數的入口不是我們隨意可以定的,可以去匯編啟動文件中找到。
stm32f10x_conf.h,這個文件被包含進stm32f10x.h文件。用來配置使用了什么外設的頭文件,用這個頭文件可以很方便的增加或刪除外設驅動函數庫。
庫文件之間的關系
庫文件直接包含進工程即可,有些文件則需要我們根據使用到的功能進行配置。
各個文件在庫工程中的層次或關系
stm32f10x_stdperiph_lib_um.chm:庫幫助文件
庫函數就是STM32的庫文件中為我們編寫好的函數接口,我們只要調用這些庫函數,就能對STM32進行配置,達到控制的目的。
調用函數式必須知道:函數的功能、可傳入的參數及其意義和函數的返回值。
庫函數提供的函數的數量也是極其龐大的,這時就需要好好的利用這個庫幫助文件,進行查找。同時由于每個函數和數據類型都是按照“見名知義”的原則編寫的,這樣名稱比較長,在進行輸入時很容易出錯,也可以在開發軟件時,在用到庫函數的時候,直接把幫助文件中的函數復制到工程文件中,避免出錯。
以上內容節選至《野火》,感謝分享。
看了STM32的庫才發現,原來嵌入式C語言程序應該這樣來編寫,可以如此的簡潔流暢與優美。對一個系統架構的構思,對每個細節表達,對指針,變量,函數,純熟的應用。對庫的編寫者深深折服,看到了大師的風范。相見恨晚。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九热精品在线 | 久久国产精品视频 | 欧美精品久久久 | 日韩视频在线观看 | 日韩在线视频免费观看 | 无码日韩精品一区二区免费 | 一级黄色裸片 | www.中文字幕| a在线观看| 日韩精品一区二区三区在线播放 | 色婷婷av一区二区三区软件 | 国产一区二区三区不卡av | 国产成人一区二区三区久久久 | 欧美极品少妇xxxxⅹ免费视频 | 成人国产在线视频 | 99视频在线看 | 亚洲区中文字幕 | 青青草一区 | 久久久999成人 | 蜜桃av鲁一鲁一鲁一鲁 | 精国产品一区二区三区四季综 | 亚洲精品久久久 | 激情自拍偷拍 | 欧美一区二区三区在线播放 | 亚洲午夜网 | 久久久久久国产精品mv | 久久久久久亚洲精品 | 国产精品一区一区三区 | 国产日韩欧美一区 | 一区二区三区精品在线 | 成人欧美日韩一区二区三区 | 91一区二区 | 国产精品视频久久久久 | 在线看av网址 | 精品视频久久久久久 | 欧美综合久久久 | 噜啊噜在线 | 一区二区av在线 | 久草视频在线播放 | 久久一区二区视频 | 色综合99 |