如何使用 STM32 的软件库在 IAR 的 EWARM 下 进行应用开发 上海
步骤一 : 创建项目目录, 拷贝公共文件 1 将 STM32 软件库中 FWlib 目录中的 library 目录拷贝到所建项目的目录中 2 将软件库的 Examples 目录里的任一例程的 stm32f10x_conf.h stm32f10x_it.c stm32f10x_it.h 和 main.c 拷贝到项目的目录中 3 拷贝软件库中 \project\ewarm\ 目录中的 stm32f10x_vector.c cortexm3_macro.s lnkarm_ram.xcl 和 lnkarm_flash.xcl 到项目的目录中 2
步骤一 : 创建项目目录, 拷贝公共文件 ( 续 ) 1 将 STM32 软件库中 FWlib 目录中的 library 目录拷贝到所建项目的目录中 2 将软件库的 Examples 目录里的任一例程的 stm32f10x_conf.h stm32f10x_it.c stm32f10x_it.h 和 main.c 拷贝到项目的目录中 3 拷贝软件库中 \project\ewarm\ 目录中的 stm32f10x_vector.c cortexm3_macro.s lnkarm_ram.xcl 和 lnkarm_flash.xcl 到项目的目录中 3
步骤二 : 修改应用文件 ( 一 ) stm32f10x_conf.h #define _ADC #define _ADC1 //#define _ADC2 #define _FLASH #define _GPIO // include gpio.h file //#define _GPIOA // not use GPIOA //#define _GPIOB // not use GPIOB #define _GPIOC // use GPIOC //#define _GPIOD // not use GPIOD //#define _GPIOE // not use GPIOE #define _AFIO // use alternat function #define _NVIC #define _RCC // Value of the External oscillator in Hz #define HSE_Value ((u32)8000000) 修改设置文件 stm32f10x_conf.h 根据自己使用需求, 打开相应外设的 define: #define _PPP ( 必须的 ) #define _PPPx ( 可选的, 根据外设决定 ) 根据自己电路板上的外部晶振频率来修改 HSE_Value 注 : 本文中使用 STM32 软件库中的例子 4
步骤二 : 修改应用文件 ( 二 ) main.c #include STM32F10x_lib.h int main() // main program( 添加自己的代码 ) { RCC_Configuration(); // Set System clock NVIC_Configuration(); // NVIC configuration GPIO_Configuration(); // GPIO configuration ADC12_Configuration();// ADC configuration // Enable ADC1 reset calibaration register ADC_ResetCalibration(ADC1); // Check ADC1 calibration while(adc_getresetcalibrationstatus(adc1)); ADC_StartCalibration(ADC1);// calibarate ADC1 // Check the end of ADC1 calibration while(adc_getcalibrationstatus(adc1)); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(1); // Infinite loop } 必须添加此行! 在 main.c 中编写自己的主程序 添加自己编写的代码 5
步骤二 : 修改应用文件 ( 三 ) stm32f10x_it.c #include stm32f10x_it.h void ADC_IRQHandler(void) { // Toggle PC.06 pin GPIO_WriteBit(GPIOC, GPIO_Pin_6, Bit_SET); GPIO_WriteBit(GPIOC, GPIO_Pin_6, Bit_RESET); // Clear ADC1 AWD pending interrupt bit ADC_ClearITPendingBit(ADC1, ADC_IT_AWD); } 修改中断文件 stm32f10x_it.c 根据开启的中断, 在对应的中断函数中添加代码 void TIM2_IRQHandler(void) { } 6
步骤三 : 创建一个新的项目 1. 点击菜单 File--> New-->Workspace 创建一个新的工程 2. 点击菜单 Project--> Create New Project 创建一个项目 3. 保存项目到设定的项目根目录中 7
步骤四 : 添加文件 向项目中添加文件 : 根据 stm32f10x_conf.h 中打开的外设, 向项目中添加对应的 PPP.c 文件 必须添加 stm32f10x_lib.c 用户可以向项目中添加 *.c 文件 ; 也可以添加代码组, 然后将 c 文件添加到组里面 : 可以很好地进行源代码管理 ; 有助于生成较好的目标代码 8
步骤五 :Option 设置 (1) 在项目名称上单击右键选择 Option, 或点击菜单 Project-->Option 9
步骤五 :Option 设置 (2):General Option 设置 Taget Processor Variant 选择 ST 系列芯片 : ST STM32F10x Endian mode 选择 : Little Stack align 选择 : 4 bytes 10
步骤五 :Option 设置 (3):C/C++ Compile A 设置 Language 选择你使用的语言 选择使用语言的规范 Plain char is: Signed 表明使用 char 定义的变量为有符号的 ; Unsigned 表明使用 char 定义的变量为有符号的 11
步骤五 :Option 设置 (3):C/C++ Compile B 设置 Optimization 根据使用需求选择代码 (Size) 或运行速度 (speed) 优化 : 1. None --- 用于调试 2. Low 3. Medium 4. High --- 用于最终代码 12
步骤五 :Option 设置 (3):C/C++ Compile C 设置 Preprocessor 设置 *.h 文件所在的位置 13
步骤五 :Option 设置 (4):Linker A 设置 :Output 开启 C-SPY 调试器 14
步骤五 :Option 设置 (4):Linker B 设置 Extra Output 打开 Generate the object file 选项 ; 用于产生调试和目标文件 根据需求选择生成的目标文件 ; 默认为 IAR 调试文件 simple-code 15
步骤五 :Option 设置 (4):Linker C 设置 Config 打开 Override default 选项 : 如果在 Flash 中调试程序, 设置 lnkarm_flash.xcl; 如果在 RAM 中调试程序, 设置 lnkarm_ram.xcl; 在进行该项设置时, 请确认电路板上的 Boot0 和 Boot1 引脚的跳线连接是否正确! 16
步骤五 :Option 设置 (5):Debugger A 设置 Setup 开启该选择, 可以设定调试起始点 选择使用的调试工具 17
步骤五 :Option 设置 (5):Debugger B 设置 Download 1. 已选择下载程序到 Flash, 可选 : Verify download Use flash loader(s) ( 必须开启!) 2. 已选择下载程序到 RAM 或使用模拟器 : 无需选择 3. 如果程序已下载到 Flash: 开启 Suppress download 18
步骤六 : 保存 Workspace 保存工程文件到项目目录中 19
步骤七 : 编译项目 使用菜单 Project-->Rebuild All 编译项目 在 Message 窗口查看编译结果 ; 如果有错误双击进行修改 20
步骤八 : 调试 ( 一 ) 使用菜单 Project-->Debug 或单击 Debug 按钮进入调试状态 如果在 Flash 中调试程序时, 出现下载进程对话框 21
步骤七 :Debug( 二 ) 使用菜单 Debug 中的调试菜单或工具条进行调试 22
谢谢 23