开始学习STM32F1xx(ARM Cortex-M3),用的硬件是STM32F103VET6自制最小系统 + 山寨J-Link V8;软件主要用的是IAR + 3.5固件库,当然MDK有时也会用用。
先说说环境配置。
一、硬件注意事项
- J-link 不对目标 CPU 进行检测:要注意MCU的电源必须与J-Link连接,不连接J-link测不到目标电压会导致不检测CPU。
- J-Link 找不到目标 CPU :这次是因为AVCC没有连接电源,AVCC没有连接电源会导致J-link找不到目标CPU。
- 如何用 J-Link 查看目标 CPU 状态:其实很简单,连接好目标板和连接没有错误,只要打开J-Link Commander就会看到CPU状态。
二、软件注意事项
- IAR对 J-Link 的RDI支持好像有点问题(也许是我的设置有问题),开机后如果不使用IAR自带的J-Link功能仿真一次的话,RDI仿真肯定不成功,用IAR自带的J-Link功能仿真一次后,RDI功能就正常了。MDK没有这个问题。
- ST的固件库可以在这里:http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip下载。
- 注意设置J-Link的Flash烧写功能。
再说说一些基础的东西
一、项目的模板的创建:STM32的项目不像51和AVR简单,需要在空项目上加入库文件和启动文件,所以最好创建一个项目的模板,再创建项目时就不需要再重复动作了,以IAR为例。
- 把库的头文件路径添加到项目的额外包含目录里(Project>Options>C\C++ Compiler>Preprocessor>Additional include directories)。主要有 “.\Libraries\CMSIS\CM3\CoreSupport”;”.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x”;”.\Libraries\STM32F10x_StdPeriph_Driver\inc” 这三个位置。
- 把需要用到的库源文、system_stm32f10x.c、core_cm3.c、stm32f10x_it.c 、stm32f10x_it.h添加到项目里。这些文件可在“.\Libraries\CMSIS” 里的文件夹内找到。
- 启动文件(.s文件)添加进项目。启动文件各后序的意思为 cl——互联型(107)、hd——大容量(10xxC/D/E)、md——中容量、ld——小容量、xl——超小容量、vl——超值系列(100)。可在“.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup”找到
- 添加stm32f10x_conf.h 到目录,可以在“.\Project\STM32F10x_StdPeriph_Template” 找到。
- 创建main.c #inlcude “stm32f10x.h” 。
其实最简单的方法是直接拷贝.\Project\STM32F10x_StdPeriph_Template的模板然后打开相应IDE文件夹的工程文件。
二、启动文件(.s文件)的作用:个人暂时理解成中断向量表,和指定中断处理函数。