Target Setup

<< Click to Display Table of Contents >>

Navigation:  STM32F4 Target > Block References > Device Configuration >

Target Setup

Previous pageReturn to chapter overviewNext page

User Interface

How this block appears in a Simulink model?

targetsetup

What can be configured?

targetsetupmask

When to use this block?

A single instance of this block must be inserted in every STM32F4 Target Simulink model. This block is used to setup the target to:

1.Generate code for the selected STM32F4 target from a list of supported MCU.
2.Select and control the Cross Compiler for use to compile the generated code. See the following documents for compiler 's options:
a.GNU Tools for ARM Embedded Processors contains documentation for GNU GCC compiler.
b.IAR C/C++ Development Guide Compiling and linking for Advanced RISC Machines Ltd’s ARM® Cores (pdf) describes EWARM compiler & linker command line usages and options.
c.ARM® IAR Assembler Reference Guide for Advanced RISC Machines Ltd’s  ARM Cores (pdf) describes EWARM assemble command line usages and options.
3.Set up various system clocks for the target.
4.Control the entire Build Process from automatic compiling to download (flash programming).

How does this block work?

Generated Code Task Scheduling

Waijung Blockset supports "Multirate Single Tasking" scheduling. This means the base interrupt timer (based on SysTick Module) will be automatically set at the smallest sample time of a system. For example, assume that you set your system to operate at 2 different rates, say, at every 0.1sec and 1sec, the generated code will be such that SysTick Interrupt Service Routine interrupts at every 0.1sec to execute the 0.1sec tasks, and, in addition, at every 10th SysTick interrupt, the 1sec tasks will also be executed automatically.

In this sense, you only need to make sure that all tasks are performed within the specified smallest sample time, e.g. in the above example 0.1sec.

You can configure the system to operate at Multirates by simply assign the required sample time in each sample time filed in each block mask parameter, under one required condition, i.e. every sample time must be a multiple of the base (smallest) sample time. You can use -1 to inherit sample time (from previous block).

Press CTRL + J to see color legend of each sample time.

See [1] for more information about Simulink generated code Task Scheduling.

Systick is a special 24-bits timer. As such, it can count up to 224-1 = 16777215 counts. Each Systick count takes 1/HCLK seconds. For instance, if you set the HCLK to the maximum of 168MHz, Systick timer can count up to 16777215/(168x106) = .0999 seconds. This is the largest possible time steps for your system; meaning, all task that are based on native Simulink blocks must be completed within this time interval. So if you set up your system to operate very slowly, for instance, if the smallest sample time (counting all blocks in the system) is 1 second, you have got a problem because Systick can count only up to 0.0999 seconds (your time step interval can not be greater than 0.0999 seconds). Waijung solves this problem by computing the greatest possible Systick value as a multiple of "1" (i.e. ..., 100, 10, 1, 0.1, 0.01, 0.001, ...) that can be used as the base sample time.

So in the above example, the base sample time of your system will be set to 0.01 sec or 10 msec automatically. Waijung select the greatest value possible, that does not violate Systick constraints, so that you have the maximum time interval possible to complete all tasks in the system.

In addition to the above mechanism, Waijung also automatically classifies tasks as real-time critical or non real-time critical (background tasks). Examples of real-time tasks are reading ADC inputs or generating DAC outputs. Examples of non real-time critical tasks are character LCD updates, CANBUS or other communication message processing, and webserver message processing. For real-time critical tasks, Waijung automatically generates and puts the core functions for such tasks in the main (Systick) timer interrupt service routines. The provision of non real-time task mechanism allows for more flexible and practical applications. For instances, a user can configure a system to operate with a fast inner-control loop (such as driving PWM or input capturing signals) as a real-time critical tasks, , while having  a LCD (non real-time task) updates at 30Hz rate running without blocking the real-time critical functions. Provisions, in a form of Asynchronous Interrupt Function Call Sub-System, are made available if real-time responses are needed for uses with non-real time critical tasks.

Because Waijung tries to determine the sample times automatically for you, it is necessary to "Update the Diagram" twice. The first Update is to determine sample time of all blocks in the system, except the Target set up block. The second Update is to determine the base sample time (Target Setup Block sample time) based on information of the first Update.

It is possible to override automatic base sample time determination by enable the "Manually set base sample time" check box as shown below.

targetsetupmask_manualsetsampletime

 

Clock Configuration

Normally, STM32F4xx clock configuration is done via the clock configuration source file “system_stm32f4xx.c”.

STMicroelectronics has made available a very easy-to-use clock configuration tool for STM32F4xx MCU  which is a Microsoft Excel file (STM32F4xx_Clock_Configuration_V1.0.1.xls) that has a simple user interface for use to generate the clock configuration file “system_stm32f4xx.c”.

STM32F4xx_Clock_Configuration_V1.0.1.xls can be downloaded from [2]. It is also made available under the directory rapidstm32f4root\utils\STM32F4xx_AN3988_V1.0.1. of this STM32F4 Target installation. Information about this utility is available from [3].

STM32F4 Target supports highly flexible clock configuration via the use of this STMicroelectronics Clock configuration tool for STM32F4xx controllers.

There are three clock configuration options as shown below:

1.STM32F4DISCOVERY Default (HSEOSC-8MHz/HCLK-168MHz)
2.STM3241G Default (HSEOSC-23MHz/HCLK-168MHz)
3.Custom (system_stm32f4xx.c)

STM32F4DISCOVERY Default (HSEOSC-8MHz/HCLK-168MHz)

By selecting “STM32F4DISCOVERY Default (HSEOSC-8MHz/HCLK-168MHz)” option, STM32F4 Target will automatically use the following system_stm32f4xx.c which is generated from STM32F4xx_Clock_Configuration_V1.0.1.xls with the options as shown in Figure 1. This configuration is basically suited for use with such boards as STM32F4DISCOVERY which uses a 8MHz external crystal at the highest working (HCLK) clock speed of 168MHz.

Figure 1 “Default (HSEOSC-8MHz/HCLK-168MHz)” option

Figure 1 “Default (HSEOSC-8MHz/HCLK-168MHz)” option

STM3241G Default (HSEOSC-25MHz/HCLK-168MHz)

By selecting “STM3241G Default (HSEOSC-25MHz/HCLK-168MHz)” option, STM32F4 Target will automatically use the following system_stm32f4xx.c which is generated from STM32F4xx_Clock_Configuration_V1.0.1.xls with the options as shown in Figure 2. This configuration is basically suited for use with such boards as STM3241G-EVAL which uses a 25MHz external crystal at the highest working (HCLK) clock speed of 168MHz.

Figure 2 “Default (HSEOSC-25MHz/HCLK-168MHz)” option

Figure 2 “Default (HSEOSC-25MHz/HCLK-168MHz)” option

Custom (system_stm32f4xx.c)

By selecting “Custom (system_stm32f4xx.c)” option, STM32F4 Target will automatically use the system_stm32f4xx.c file that resides in the directory rapidstm32f4root\utils\STM32F4xx_AN3988_V1.0.1. Hence a user can generate any custom clock configuration (via system_stm32f4xx.c file) to configure clocks of any STM32F4xx target board with the STMicroelectronics clock configuration tool.

References

1.Simulink Single Tasking and Multitasking Modes Explained
2.STM32F4xx Design Support Application Notes
3.AN3988 Clock configuration tool for STM32F40x/41x microcontrollers
4.STM32F40x/41x Clock configuration software