STM8L-discovery操作-IAR配置与GPIO端口操作
—By fxw451
对于刚开始学习stm8l的初学者(这里当然也包括其他的比如stm8s和stm32)来说,IAR软件如何使用是成功的一般,要学会建立一个工程和添加头文件,以及做相应的配置。
有关如何装软件大家可以参照下IAR使用教程,下面咱们就开始接受如何建立一个工程:安装下面图下的操作,首先找到project里create new project
会的到下面的图,现在stm8系列
当然你只装了只有stm8的IAR,里面会没有arm的。
然后你有二个选择建立你的工程
<!--[if !supportLists]-->(1) <!--[endif]-->选择Empty project单击OK,出现下面的图
输入一个文件名,比如aa,会出现下图
在点击保存后,输入一个aa就建立一个工程了,然后就是你要输入进去你的.c .h的文件,首先建立一个main.c文件还有src和inc文件夹,如下图所示:
在src里拷贝你要用到的.c文件,inc里拷贝你要用到的.h文件,这些.c .h的文件你要去你的IAR安装软件的文件里去找,比如我的是下图:
我以控制一个灯的亮为例,用到的文件如图所示
我用到的上面图上的文件,其中stm8l15x.h是必选的,其他的根据你的配置要,stm8l15x_conf.h是头文件配置,如图所示:
这里我用到了GPIO和clk的头文件,我就去掉他们俩的注解
然后再在你的工程里添加头文件,然后在添加 add group,添加src和inc两个文件,然后再在文件下add你刚才复制到这里面的那些.h .c 文件,最后得到这样的图:
这些添加完后就要配置了,选中aa这个工程,然后右击或者在菜单栏下的project里选择option,得到如图所示:
第一个是general option 里 target里的device选择你的芯片型号STM8L152C6,其他不变
然后在C/C++ Compiler里找Preprocessor,在这里添加你的.h .c文件的位置,我的工程建立的地址是如图所示
当然你可以用$PROJ_DIR$\..\inc表示你所在的工程目录下的inc所在的位置,$PROJ_DIR$\表示当前位置。如图所示:
然后再在defined symbols下选择STM8L15X_HD
当然有三种选择
One of the following macros must also be defined:
- STM8L15X_MD for Medium Density devices.
- STM8L15X_MDP for Medium Density Plus devices.
- STM8L15X_HD for High Density devices.
根据你的需要选择你的不同方式。
然后就是在你的linker下选择linker configuration file 选择你所需要的icf
然后就是Debugger下的setup里driver选择你的仿真器类型,在这里选择st-link
这样配置完后,就要写main程序了,我写的是如下:
#include "stm8l15x.h"
void DelayMS(unsigned int ms) //延时时间设置,这里要用到clk时钟配置
{
unsigned char i;
while(ms != 0)
{
for(i=0;i<250;i++)
{ ms--;
}
}
}
main()
{
GPIOC->DDR = 0x08;
GPIOC->CR1 = 0x08; // 将PD3设置成推挽输出
GPIOC->CR2 = 0x00; //这三个是配置,DDR是配置输入输出,CR1和CR2是配置输入输出方式,自己去查查
while(1)
{
GPIOC->ODR = GPIOC->ODR | 0x80; // 将PD3的输出设置成1
DelayMS(100); // 延时100MS
GPIOC->ODR =GPIOC->ODR & 0x7F; // 将PD3的输出设置成0
DelayMS(100); // 延时100MS
}
}
这要就可以运行了。
其中DDR,CR1 CR2的配置如下图:
最终运行的结果是灯一闪一闪的。
<!--[if !supportLists]-->(2) <!--[endif]-->选择C单击OK来建立工程
我们会得到下面的图:
点击保存后得到下面的图,然后点击确定就行。
这样你就能很容易的看到这个工程了,而这个工程里已经包含了一个main.c的文档。然后就是按照(1)的步骤建立两个文件夹,添加头文件。IAR配置和上面是一样的。
下面再介绍下建立工程的时候常见的错误
<!--[if !supportLists]-->(1) <!--[endif]-->硬件选型不对会出现以下错误:下面说the debugger initialization failed or aa.out was corrupt
注:出现上面的错误可能还有其他的原因a:stm8l-discovery里的CN3没有查上,无法下载到芯片里去;b: 没有电源,不过对于stm8l-discovery不会出现这个问题,对于自己做的板子可能就有这方面的问题;c: debugger有问题,这里你要更新你的debugger下载 IAR for stm8 debugger-support-files.exe进行更新
<!--[if !supportLists]-->(2) <!--[endif]-->选择你的应用错误,如下图所示:
这里你要在option里C/C++ Compiler里defined symbols下选择STM8L15X_HD
当然有三种选择可供你选择
One of the following macros must also be defined:
- STM8L15X_MD for Medium Density devices.
- STM8L15X_MDP for Medium Density Plus devices.
- STM8L15X_HD for High Density devices.
<!--[if !supportLists]-->(3) <!--[endif]-->头文件路径没设置错误。在这里很多初学者就很纳闷,为什么会出现这种错误?我头文件也添加上了,怎么还能有这种问题呢?其实不然,你添加上的只是在的你项目里,而没在你运行的时候利用它,如下图所示:
出现这种问题,请参考前面的IAR配置,具体是:C/C++ Compiler里找Preprocessor,在这里添加你的.h .c文件的位置,这样就没问题了。