豆皮 - STM32开发板入门教程(一) - LED跑马灯 (原创)
发布: 2008-10-21 15:51 | 作者: littleworm | 来源: StmFans思蜕盟 OPELC 自由电子联盟
豆皮 - STM32开发板入门教程(一) LED 跑马灯
http://www.stmfans.com/bbs/viewthread.php?tid=1031&extra=page%3D1 |
一步一步创建第一个 IAR 工程 (IAR442 + ST-LINKII) 首先创建项目目录,拷贝公共文件:将 STM32 软件库中 FWlib 目录中的 library 目录拷贝到所建项目的目录中 |
这个是库 FWLIB 文件夹 把 FWlib 目录中的 library 目录拷贝到所建项目的目录中 |
将软件库的 Examples 目录里的任一例程的 stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h 和 main.c 拷贝到项目的目录中(这里选择的是 GPIO 目录下的 \FWLib\examples\GPIO\IOToggle) |
拷贝软件库中 \project\EWARM\ 目录中的 stm32f10x_vector.c、cortexm3_macro.s、lnkarm_ram.xcl 和 lnkarm_flash.xcl 到项目的目录中 |
好了,系统的库文件和一些stm32的特征文件已经 copy 过来了 |
下面开始忙活 IAR 了 |
打开 IAR442 点击菜单 File --> New -->Workspace 创建一个新的工程 |
点击菜单 Project --> Create New Project 创建一个项目 (empty 空白项目) 保存项目到设定的项目根目录中 |
在项目的位置点右键,然后点 add 用户可以向项目中添加 *.c 文件;也可以添加代码组,然后将c 文件添加到组里面 |
对于这个 LED 的例子,我添加了3个代码组 分别为 EWARM,FWLIB,USER |
然后 1 . 把 stm32f10x_vector.c ,cortexm3_macro.s 这 2 个文件 add 到 EWARM 中 2. 把 stm32f10x_flash.c,stm32f10x_gpio.c,stm32f10x_lib.c,stm32f10x_nvic.c,stm32f10x_rcc.c 5 个文件 add 到 FWLIB 中 3. 把 main.c ,stm32f10x_conf.h, stm32f10x_it.c , stm32f10x_it.h 这 4 个文件 add 到 USER 中 添加好的情况如下图所示 |
文件添加完毕 下面来配置一下这个工程 在项目名称上单击右键选择Option 或点击菜单 Project --> Option 点击 general options 设置 Taget Processor Variant core 选择 Cortex –M3 Device 选择 ST STM32F10x Endian mode 选择 Little Stack align 选择: 4 bytes |
点击 C/C++ Compiler Language 选择用户编程语言 Plain‘char’is: Signed 表明使用 char 定义的 变量为有符号的; Unsigned 表明使用 char 定义的变量为无符号的。 |
点击 Optimizations 根据使用需求选择代码 (Size) 或运行速度 (speed) 优化: 1. None ---用于调试 2. Low 3. Medium 4. High --- 用于最终代码 |
点击 Preprocessor 设置 *.h 文件所在目录 $PROJ_DIR$\ $PROJ_DIR$\library\inc\ 然后在 defined symbols 里面写上 VECT_TAB_RAM |
点击 Linker OutPut 选择上 Allow C-SPY specific extra output file 开启 C-SPY 调试器 |
点击 Extra Output 选择上 Generate extra output file 用于产生目标和调试文件 Output format 根据需要选择生成的目标文件 默认是 选择 simple – code |
点击 Override default 选项: 1.如果在 Flash 中调试程序 设置 lnkarm_flash.xcl 2.如果在 RAM 中调试程序,设置 lnkarm_RAM.xcl 注意:在进行该项设置时,请确认电路板上的Boot0 和Boot1引脚的跳线连接是否正确 |
点击 Debugger Setup 选择调试工具,由于我用的是 ST-LINNK2 所以选择的是 Third – Party Driver 勾选Run to main |
点击 Download 1. 已选择下载程序到 Flash, 可选:Verify download ( Use flash loader(s) 必须开启!) 2. 已选择下载程序到 RAM 或使用模拟器:无需选择 3. 如果程序已下载到 Flash:开启 Suppress download |
点击 Third – Party Driver 指定 ST-LINK2 的驱动位置 目标文件是 STM32Driver.dll |
OK! 设置好了,我们来点一下 rebuild all 呵呵!出现了错误,那是因为所有代码我们都没修改,直接 copy 原来 example 的 稍作修改一下(去掉图示的 include ) 用于我们的 LED 控制 |
此工程创建完毕,我们就可以修改代码,进行编译和仿真了,hoho! |
LED 跑马灯代码部分 RCC_Configuration(); // 配置系统时钟 NVIC_Configuration(); // 配置 NVIC 和 Vector Table GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); // 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP) GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); // 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能 GPIO_Configuration(); // 配置使用的 GPIO 口 while (1) { 亮 - 延迟 - 灭 ……….. } |
这里说明一下,因为我们豆皮上面的 8 个 LED 灯中,有一个 LED 接在了 JTAG 的引脚上(PA15)。在复位后,用于 SWJ-DP 的 5 根引脚被分配为调试器主机立即可用的专用引脚。但是呢,STM32F10xMCU 提供了 REMAP_DBGAFR 寄存器用来禁用 SWJ-DP 端口的部分或者全部,这样相关的引脚将被用于通用的 IO。对该寄存器的编程是用户软件来完成的,而不是由调试主机来完成的。那么,在库函数中提供了 GPIO_PinRemapConfig() 这么一个函数来改变指定管脚的映射。程序中就使用了这个函数来修改 JTAG 引脚用于 GPIO 口。 PS: 本教程附件中的代码 下载后是不能仿真的 因为程序跑起来后就把JTAG引脚给disable 了 如果需要仿真 那么请把这GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); 和 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); 注释掉 呵呵 完整工程代码在附件里 敬请继续关注 豆皮的的教程会逐步推出 |





















期待下一篇的到来。
这个是豆皮配套的教程 嗯
需要详细一点 呵呵
大家在坛子里 相互帮助 多多交流就是了
QUOTE:
在这个帖子回个帖子留个掏宝账户名字
http://www.stmfans.com/bbs/viewt ... page%3D1&page=3