嵌入式学习--work2 IAR 如何建立模板

来源:互联网 发布:php global用法 编辑:程序博客网 时间:2024/06/15 21:00

首先,我们得知道手头板子的型号及厂家给予我们了哪些代码。
stm32f411VEH6
库目录及文件简介
1、CMSIS
为了解决不同芯片厂商生产的Cortex微控制器软件的兼容性问题,ARM与芯片厂商建立了CMSIS标准(Cortex Microcontroller Software Interface Standard)
CMSIS标准中最主要的是CMSIS核心层,它包括:
内核函数层:其中包含用于访问内核寄存器的名称、地址定义,主要由ARM公司提供。
设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供。
可见CMSIS层位于硬件层与操作系统或用户层之间,提供了与芯片生产商无关的硬件抽象层,可为接口外设、实时操作系统提供简单的处理器软件接口,屏蔽了硬件差异,这对软件的移植有极大的好处,STM32固件库就是按照CMSIS标准建立的。

//////////////////////////////////////////////////
stm32f4xx.h 用来:
- Configuration section that allows to select:
* - The STM32F4xx device used in the target application.
* - To use or not the peripheral drivers (外设驱动) in application code(i.e.
* code will be based on direct access to peripheral registers(外设寄存器).
* rather than drivers API), this option is controlled by
“#define USE_HAL_DRIVER”
即,如果定义了#define USE_HAL_DRIVER 那么代码是直接操作外设的寄存器而不是驱动API.
core_cm4.h 用来: -CMSIS 定义
core_cmInstr.h /core Instruction access/
core_cmFunc.h /core function access/
core_cm4_simd.h /compiler specific SIMD Intriinsics/
system_stm32f4xx.c 提供了两个函数,一个变量。
SystemInit( ); /*This function is called at startup just after reset and before branch to main program. This call is made inside
the “startup_stm32f4xx.s” file*/
SystemCoreClockUpdate( ); /This function is called at startup just after reset and before branch to main program. This call is made inside the “startup_stm32f4xx.s” file/
SystemCoreClock variable : Contains the core clock (HCLK). it can be used by the user application to setup the SysTick timer or configure other parameters.
/////////////////////////////////////////////////
2、
system_stm32f10x.c 文件是由ST公司提供的,遵守CMSIS标准,该文件的功能是设置系统时钟和总线时钟。
stm32f10x.h 这个文件包含了STM32中寄存器地址和结构体类型定义。
startup_stm32f10x_d.s 启动文件,由汇编语言编写,不同的文件对应不同的芯片型号,在使用时需要注意。
文件名的英文缩写的意义如下:
cl: 互联型产品,stm32f105/107系列
vl: 超值型产品,stm32f100系列
xl: 超高密度产品,stm32f101/103系列
ld: 低密度产品,Flash小于64KB
md: 中等密度产品,Flash等于64KB或128KB
hd: 高密度产品,Flash大于128KB
启动文件的作用:启动文件是任何处理器在上电复位之后最先运行的一段汇编程序,在我们编写的C语言代码运行之前,需要由汇编语言为C语言的运行建立一个合适的环境,接下来才能运行我们的程序。
总的来说:启动文件的作用:
1) 初始化**堆栈指针**SP
2) 初始化**程序计数器指针**PC
3) 设置堆、栈的大小
4) 设置异常向量表的入口地址
5) 配置外部 SRAM 作为数据存储器(这个一般由用户配置,一般的开发板没有外部SRAM)
6) 设置C库的分支入口__main
7) 3.5版的启动文件还调用了在system_stm32f10x.c 文件中的 SystemIni( )函数配置系统时钟,在旧版本的工程中要用用户进入main函数自己调用SystemIni( )函数。
3、STM32F10x_StdPeriph_Driver文件夹
该文件夹下有一个 inc(头文件)和 src(源文件),都属于设备外设函数部分。src里面是每个设备外设的驱动程序,这些外设是芯片制造商在Cortex-M3 核外加进去的。例如针对模数转换(ADC)外设,就有stm32f10x_adc.c 与 stm32f10x_adc.h .
4、misc.c
这个文件提供了外设对内核中的NVIC(中断向量控制器)的访问函数。
5、stm32f10x_it.c
专门用来编写中断服务函数的
6、stm32f10x_conf.h
7、stm32f4xx_nucleo.c 该文件提供了一些关于固件函数,例如,LEDs的 和 Button的,如,BSP_LED_Init() 函数用来配置LED GPIO的,BSP_LED_On() 打开LED灯的,再如BSP_LED_Toggle() 函数用来翻转LEDs。

//////////////////////////////////////////////////////////
下面讲述怎么建立 IAR 的模板
1、从官网下下载固件库文件,可以直接百度到ST官网下载,这里我贴出了官网的下载地址:
http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-embedded-software/stm32cubef4.html
这里写图片描述
点击到 get software
因为我所用的板子是STM32F411,所以如果大家是其他板子得在这个网站上再找到自己所需的型号。

2、建立几个文件夹:
CORE FWLIB SYSTEM USER 这四个文件夹的作用于SDK一样的,该放些什么文件,在SDK如何新建模板里已经讲过,所以这里不赘述。
打开IAR
这里写图片描述

3、点击【Project】 – Create New Project –就新建一个empty project就好,直接点击OK,输入保存地址,一般我们保存在USER下。

4、鼠标定位到template -Debug 右键它,点击【Options】。
这里写图片描述
如果没有你所需要的器件类型,可能是IAR版本过低,请下载高一点的版本,我所使用的是7.30版本的。

5、还是在这个Options里面,选择【C/C++ Compiler】,再选择【Preprocessor】页在【Additional include directories】的文本框中,输入您的项目所需索引的头文件地址,配置完成后如图所示。

6、 还是在这个Options里面,选择【Linker】,再选择【Config】页,将【Override Default】复选框选中,单击文本框右侧的文件选择按钮,在您的项目根目录中选择您要连接配置的文件。

/***************/
IAR–ARM编程–函数学习
1、*HAL_statusTypeDef HAL_Init(void)*,这个函数是用来初始化HAL库的,一定得是主函数里第一个执行的。
它的作用是:
a/ Configure the Flash prefetch , instruction and Data caches.
b/ Configure the SysTick to generate an interrupt each 1 millisecond.(SysTick is used as time base for the HAL_Delay() )
c/ Calls the HAL_MspInit() callback function defined in user file.

HAL_statusTypeDef 是个枚举型变量有4个值,如下:

typedef enum {  HAL_OK       = 0x00,  HAL_ERROR    = 0x01,  HAL_BUSY     = 0x02,  HAL_TIMEOUT  = 0x03} HAL_StatusTypeDef;

2、SystemClock_Config();

/**  * @brief  System Clock Configuration  *         The system Clock is configured as follow :   *            System Clock source            = PLL (HSI)  *            SYSCLK(Hz)                     = 84000000  *            HCLK(Hz)                       = 84000000  *            AHB Prescaler                  = 1  *            APB1 Prescaler                 = 2  *            APB2 Prescaler                 = 1  *            HSI Frequency(Hz)              = 16000000  *            PLL_M                          = 16  *            PLL_N                          = 336  *            PLL_P                          = 4  *            PLL_Q                          = 7  *            VDD(V)                         = 3.3  *            Main regulator output voltage  = Scale2 mode  *            Flash Latency(WS)              = 2  * @param  None  * @retval None  */

/****工程建立好了还要配置ST–LInk 调试器*****/

这里写图片描述

这里写图片描述

配置这里写图片描述

0 0
原创粉丝点击