你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

自己动手创建一个基于万利STM32板的IAR工程

[复制链接]
incompletely 发布时间:2008-9-3 20:11
    圈圈前面几个STM32的程序是直接拿例子来改的,但我们总不能每次都拿别人的例子来改吧?我们要学会如何自己来创建一个属于自己的IAR工程。* n! j2 `! O! z$ a/ h
    1 w+ t! J( [& k. U
    首先启动IAR开发环境。如果你的设置是在启动时出现Embedded Workbench Startup对话框,那么可以直接在这个对话框中点击第一个按钮——Create new projectin current workspace。如果你选择了启动不出现这个对话框,那么你可以在IAR的菜单栏中找到Project菜单,在其子菜单中有一个“Create new project...”。点击之后会出现创建新工程的对话框,Tool chain选择ARM,Project templates我们选择Empty project,然后点击OK。这时会弹出保存工程的对话框,随便些个工程名,例如MyTestProject,点击保存。这时一个空的工程就创建好了,接下来我们对工程的选项进行设置。
" Z* t3 K7 _5 y" u* ~    在Workspace窗口中,右击MyTestProject,在弹出的菜单中选择Options,这时就打开了工程选项。在第一项GeneralOptions中,选择Target标签页。在Processor variant分组中单击Device单选按钮,然后单击Device右边的器件选择按钮,在弹出的菜单中选择ST菜单中的ST STM32F10x。Endian mode选择为Little,即小端模式。Stack align选择为4字节。Output标签页使用默认设置就可以了,不用动。Library Configuration标签页中的Library选择为Full。Library options和MISRA C标签页不用动,使用默认即可。
9 b& ~6 k1 @% {    再切换到C/C++ Compiler分类,选择Language标签页,Language我们选择为C,并将Require prototypes勾上,在Language conformace分组中选择Relaxed ISO/ANSI。其他几个标签页可以不用修改。  z0 [( m- e' }1 m2 j3 Y0 S# n! U6 F5 b9 H
    然后再切换到Linker分类,在Output标签页中,在Format分组中将Allow C-SPY-specific extra的复选框勾上。再切换到Extra Output标签页,将Generate extra output file勾上。再切换到Config标签页,在Linker command file分组中将Override default勾上,这时有个默认的lnkarm.xcl文件,它位于IAR的安装目录\IAR Systems\Embedded Workbench 4.0Kickstart\arm\config下。点击旁边的浏览文件的按钮,找到这个默认的lnkarm.xcl文件,然后复制一份到我们的工程目录MyTestProject下。然后在Override default下面的框中写入路径$PROJ_DIR$\lnkarm.xcl,这将使用我们工程目录下的链接文件。但是这个链接文件还是不行的,需要做一下修改。用记事本打开我们刚刚复制到工程目录下的lnkarm.xcl文件,找到以下部分并修改(其中用//注释的是原来的):
6 r) Z5 H1 O8 E9 ~
& o) s( [7 ^; v" E0 |; [; l6 J1 m//-DROMSTART=08000
& U, J& M, p3 |  G( ^) s1 f' L//-DROMEND=FFFFF
) ~5 \& `' K/ `8 o$ i-DROMSTART=0x8000000
6 |1 u4 j+ r" c- x-DROMEND=0x801FFFF
7 |- F7 S) a6 f4 ^- b//-DRAMSTART=100000
2 w3 @' Y- W0 ^: f//-DRAMEND=7FFFFF
+ l5 K8 {! n" o-DRAMSTART=0x20000000
; W- s: e1 @/ |-DRAMEND=0x20004FFF2 f, y: E4 ]4 ]- Y4 M" H
//-Z(CODE)INTVEC=00-3F2 M3 N5 E9 ]; k9 k8 v4 b
-Z(CODE)INTVEC=ROMSTART-ROMEND
  `. A2 T  X6 [2 Z5 R//-D_CSTACK_SIZE=2000  g% S3 j7 y9 A+ \" T; {& Y
-D_CSTACK_SIZE=800) A5 {" |7 a  l* N2 J
//-D_HEAP_SIZE=8000
2 p) B7 I; L+ ]- m-D_HEAP_SIZE=400  A' O' ]3 R+ h& G& q8 f

6 |( c- h5 r- [( j" U& A5 x4 F    再切换到Debugger分类,在Setup标签页中,Driver选择Third-Party Driver。在Download标签页中,将Use flashloader勾上。# T: K6 x- y( h1 h; i  p
    然后在切换到最下面的Third-Party Driver分类,以选择调试器的驱动。在IAR debugger driver下的文本框中输入驱动的路径,一般是C:\Manley\drivers\STLink\STM32Driver.dll,这要看你的STLink驱动装在哪了,指定到安装的路径即可。
# A4 x4 y7 ~! i: v- _+ A- O% m" o+ A    至此,我们的工程选项就设置完了。接下来我们写个流水灯的程序。要控制LED亮,就需要将对应的IO口设置为输出口,并控制IO口的输出电平。通过查看万利STM32板的原理图,我们4个LED是分别接在PORTC的4、5、6、7这4个引脚上的,高电平时将点亮LED。: W" S* t) ^; b* n% `
    首先我们要将IO口设置为输出模式,查看STM32F103的数据手册,是通过GPIOx_CRL和GPIOx_CRH寄存器来选择模式的。我们要设置PORTC口的4、5、6、7位,那么就应该使用GPIOC_CRL寄存器,它的地址为0x40011000。我们将这4个IO口设置为50MHz的推挽输出模式,具体的代码见后面。然后,我们就可以对IO口的高低电平进行控制了,这通过端口置1和清0寄存器来控制,即寄存器PIOx_BSRR寄存器和GPIOx_BRR寄存器。GPIOx_BSRR寄存器可以同时置1和清0,高16位是用来清0的,低16位是用来置1的。如果置1和清0位被同时设置,那么置1的优先级高。由于我们这里是控制LED的,对操作要求不严格,所以我们不使用BSRR寄存器的高16位,而用GPIOx_BRR寄存器来清0。GPIOC_BSRR和GPIOC_BRR的地址分别为0x40011010和0x40011014。另外,我们还需要启动PORTC的时钟,才能让端口工作起来。启动PORTC时钟的控制在RCC_APB2ENR寄存器中,其中Bit4控制PROTC的时钟,该位为1时时钟使能。RCC_APB2ENR的地址为0x4002 1018。& A' t( _+ ?/ B" q$ n2 w0 I, [0 ]
8 j; f/ ~$ U/ {6 s
    最终,我们写出的流水灯程序入下所示。点击创建新文本文件的图标,建立一个新的源文件。然后将以下代码复制进去:
7 C4 Q" Q7 x) v0 o3 I8 I. v5 `8 J; z- k$ m6 E6 T' _0 g1 ~
#define GPIOC_CRL   (*((unsigned int *)(0x40011000))), H. }, v; c5 D  m9 W
#define GPIOC_BSRR  (*((unsigned int *)(0x40011010)))8 E6 Z2 c$ V, L4 Q/ r9 [7 m  o& `
#define GPIOC_BRR   (*((unsigned int *)(0x40011014)))7 Q8 D3 \1 U; U, x8 e8 Z/ m* M) x
#define RCC_APB2ENR (*((unsigned int *)(0x40021018))): g6 M% k% s  `$ W: W# v

6 D+ \& V8 y5 Rvoid Delay(void)//延时函数,流水灯显示用
% z5 @' T/ V7 v% Z{% L( A6 W& |# I5 \+ A
unsigned int i;1 q" |! s" y3 a' o+ I& A; k
for(i=0;i
收藏 评论0 发布时间:2008-9-3 20:11

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版