STM32新建工程

固件庫:固件庫就是把操作寄存器的代碼封裝成函數給用戶操作寄存器實現想要的功能


用固件庫操作寄存器,新建工程的步驟:
1.在本地新建一個文件夾,存放庫文件
在這裏插入圖片描述

CMSIS存放內核相關的頭文件、啓動文件和system _stm32f4xx.h system_stm32f4xx.c文件
Project存放工程文件
STM32F4xx_StdPeriph_Driver存放外設的頭文件和源文件
User存放main.c、mian.h、stm32f4xx_it.h、stm32f4xx_it.c、(編寫中斷服務函數,定義了一些特殊的終端接口,一般中斷函數都是自己寫的)stm32f4xx_conf.h(根據芯片的型號去增減外設的頭文件)


啓動文件(startup_stm32f429_439xx.s)是用彙編語言編寫的。EQU相當於C語言中的define
Stack—棧(向下生長) Heap—堆(向上生長)
__initial_sp(表示棧的結束地址)
__heap_base(表示堆的起始地址)
__heap_limit(表示堆的結束地址)
啓動文件主要包含了中斷服務的定義和中斷服務程序,中斷服務程序只是佔一個位置,中斷服務程序還是有自己編寫還有一個復位程序
在這裏插入圖片描述在啓動文件中調用了SystemInit()這個函數以及main()函數


2.然後打開keil,新建工程。添加組,把對應的源文件添加進去
在這裏插入圖片描述
一個工程中必須要有startup_stm32f429_439xx.s、system _stm32f4xx.h、system_stm32f4xx.c、stm32f4xx.h這四個文件
startup_stm32f429_439xx.s啓動文件(調用SystemInit()這個函數去配置STM32的時鐘, 設置 C庫的分支入口“__main(用來調用main函數))
system_stm32f4xx.c這個文件包含了stm32f4xx的系統時鐘配置,啓動文件調用的SystemInit()的這個函數是在system_stm32f4xx.c這個源文件中,這個源文件包含了stm32f4xx.h這個頭文件。
stm32f4xx.h這個文件包含了stm32f4xx所有的外設寄存器定義、位定義和寄存器映射

3.編譯
在這裏插入圖片描述
會發現有很多錯誤,因爲我們在添加組的時候沒有添加頭文件的路徑所以導致有錯誤


修改錯誤:(1) 首先打開選項卡,(C/C++)把需要用到的頭文件路徑添加進去
在這裏插入圖片描述(2)編譯一下,打開“stm32f4xx.h”這個文件,要定義宏(要用的是標準庫,不是HAL庫)和用的芯片
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述(3)把stm32f4xx_fsmc.h,去掉選擇不編譯(因爲stm32f4xx_fmc.h這個頭文件已經包含了stm32f4xx_fsmc.h,不能重複定義)
(4)修改stm32f4xx_it.c文件(去掉void SysTick_Handler(void)函數中的SYSTIK Handler 和#include math.h)
完成後就可以寫代碼了

發佈了17 篇原創文章 · 獲贊 20 · 訪問量 5216
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章