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)
完成后就可以写代码了

发布了13 篇原创文章 · 获赞 19 · 访问量 1822

猜你喜欢

转载自blog.csdn.net/qq_44622367/article/details/89459167