嵌入式学习--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 调试器*****/
配置
- 嵌入式学习--work2 IAR 如何建立模板
- IAR代码模板建立
- IAR工程模板建立
- Work2
- 嵌入式学习--work1 IAR IDE学习
- IAR-代码模板建立与代码编辑技巧
- IAR-代码模板建立与代码编辑技巧
- IAR-代码模板建立与代码编辑技巧
- IAR修改工程名称Tab键设置模板建立
- IAR模板--如何在IAR工程中创建和使用模板
- 如何建立eCos嵌入式系统
- cortex_m3_stm32嵌入式学习笔记(一):建立工程模板+跑马灯实验(IO输出)
- 【IAR】编辑 IAR 代码模板
- IAR 建立工程
- STM8建立IAR工程
- STM32F1 IAR工程建立
- 嵌入式学习--step1 新建模板
- IAR学习
- MongoDB-JAVA-Driver 3.2版本常用代码全整理(1) - 增删改
- 设计模式之策略模式
- #102 Linked List Cycle
- 如何更改ISE的IP核生成器中默认关联的PDF阅读器?
- 死锁
- 嵌入式学习--work2 IAR 如何建立模板
- [bug] captcha中demo运行失败(TypeError must be sequence of length 4, not 2)
- 使用Oracle Sql Developer将SQL SERVER 2008数据库移植到Oracle 11g
- 做个快乐的程序员
- 创建SpringMVC项目之使用配置文件实现
- Retrofit的简单使用方法
- 文本溢出:单行文本,多行文本溢出显示省略号
- 英文Ubuntu系统安装中文支持,中文UTF-8
- [leetcode] 34. Search for a Range