Custom IAR Templates for STM8S Projects
I have been using the IAR development environment to develop code for the STM8S chip for several months now. One of the things that has been a little bit of an annoyance is the need to keep reconfiguring each new project as it is created. One option would be to create a template project and keep copying the template and just rename the project files and add it to a new workspace. There must be a better way…
This is the thought which started me delving into the way in which IAR stores it’s templates and asking if I could make my own.
Where are the Templates
So the first thing to do is to work out if the templates are stored as files and if so where they are. Breaking out Explorer I found an interesting directory which looked like it might be a candidate, namely:
C:Program Files (x86)\IAR Systems\Embedded Workbench 6.0 Kickstartstm\configtemplateproject
I remembered that when you create a new IAR project you are presented with three options:
- asm
- C
- C++
Guess what, in that directory I found three directories and three files with the extension .projtempl. For each project name in the default projects (asm, C, C++) there was a matching directory and matching file. We may be in luck.
What’s in the Files?
The .projtempl files are pretty small so I guessed they were text files of some sort. Feeding them to Notepad++ confirmed that they were indeed text files. In fact they were XML files. In fact the default C file looks like this:
<?xml version="1.0" encoding="iso-8859-1"?>
<template>
<displayname>C</displayname>
<description>Creates a C project.
</description>
<files>
<file>$PROJ_DIR$main.c</file>
</files>
</template>
So my guess is that the displayname and description fields determine what is shown to the user and the files section tells the environment what files are to be included in the project.
What’s in the Directory?
Next port of call is the directory for the project. So continuing with the C project type we find that the C directory contains two files:
- main.c
- templproj.ewp
Looking inside the main.c file we find the default code which is placed inside the main.c file which is created for you when you ask for a new C project.
Putting it all together
If we put all of the pieces together, I think that we can create out own project templates using the default C project as an example. Note that I am using the C project type as an example as it is the only high level language version supported by the Kickstart edition of the IAR programming environment for the STM8S processor.
So I think we need to do the following in order to create our own template:
- Copy the default C directory and templproj file and give them a consistent name (i.e. the name of the directory matches the root of the file name)
- Edit the templproj file and change the displayname, the description and optionally the files section to match our new project type
- Add files to the new directory and edit any existing files as required
So let’s give it a go and see what happens.
Creating a New Template
So the first thing to do is to decide on the name of the template we are creating and copy the files. I decided on the imaginative name of My Default C Project for the new template. Catchy isn’t it.
One of the first problems I encountered was the fact that this is a system directory as far as Windows 7 is concerned and so I had to modify the permissions. If you hit any problems with this step of any others you need to make sure that you change the permissions to allow editing and creating files. I came across this on a few occasions. If you don’t know how to do this then Google your OS to find out how to change permissions. I gave Full Control access to myself for the duration of the task and changed the permissions back afterwards.
So at this point I have a My Default C Project.templproj file and a My Default C Project directory. The directory contains the same files as the C directory.
Next step, edit the templproj file and change the displayname and the description entries. I made the displayname match the directory and project file names. The description field expands on this a little more explaining what is included in the project.
Moving on to the main.c file in our new directory I edited this to contain a basic C program which included some basic headers and reset the system clock:
#include <intrinsics.h>
#include <iostm8s103f3.h>
//
// Setup the system clock to run at 16MHz using the internal oscillator.
//
void InitialiseSystemClock()
{
CLK_ICKR = 0; // Reset the Internal Clock Register.
CLK_ICKR_HSIEN = 1; // Enable the HSI.
CLK_ECKR = 0; // Disable the external clock.
while (CLK_ICKR_HSIRDY == 0); // Wait for the HSI to be ready for use.
CLK_CKDIVR = 0; // Ensure the clocks are running at full speed.
CLK_PCKENR1 = 0xff; // Enable all peripheral clocks.
CLK_PCKENR2 = 0xff; // Ditto.
CLK_CCOR = 0; // Turn off CCO.
CLK_HSITRIMR = 0; // Turn off any HSIU trimming.
CLK_SWIMCCR = 0; // Set SWIM to run at clock / 2.
CLK_SWR = 0xe1; // Use HSI as the clock source.
CLK_SWCR = 0; // Reset the clock switch control register.
CLK_SWCR_SWEN = 1; // Enable switching.
while (CLK_SWCR_SWBSY != 0); // Pause while the clock switch is busy.
}
//
// Main program loop.
//
void main()
{
//
// Initialise the system.
//
__disable_interrupt();
InitialiseSystemClock();
__enable_interrupt();
}
So What Does This Do?
Next step, fire up IAR and create a new project. Guess what….
IT’S THERE !
Selecting the new project prompts me to create a new workspace (which I do) and then opens up the main.c file. Sure enough, it matches the code I have entered into the new template.
What’s Next?
Next step is to try and edit the templproj.ewp file in the C directory and set up some of the default options. For instance, I always use ST-Link/V2 to deploy to the STM8S chip. Maybe try adding a few files to the directory and the .projtempl file. The rest, as they say, is left as an exercise for the reader.
Tags: Software Development, STM8
Thursday, August 9th, 2012 at 7:49 pm • Software Development, STM8 • RSS 2.0 feed Both comments and pings are currently closed.