Return to site

RCC Driver Download

broken image


This is first description for libraries in HAL section for STM32F4 and F7 lines using HAL drivers provided from ST for each section. RCC (Reset and Clock Control) library is needed to set up clocks for running STM devices at high speed. It sets up PLL parameters provided from user and enables internal or external high speed clock. Library Read more about new HAL libraries Features Works on. 'I was an international student at RCC. I transferred to UC Berkeley with a 3.94 GPA where I am an Economics major. At RCC, the smaller size of classes gave me a better opportunity to talk to professors, to learn, build self-confidence, and also make friends for life.


If this is your first time that you look this page I suggest to reading from top to bottom.
The link below are for go direct to a topics but first is necessary a global vision of the library.

How to find the STM Library

The Library Manual
Inside the Library
API
Structure
Consulting the Library Manual
Use the library examples
Library - FAQ



STM provide for all Cortex the appropriate firmware library forconfigure and use the peripherals.

The STM32F4xx firmware library is here, in the window that appears download the library (see below).

Go on Top




The Library Manual
After unzip the library you see a file named: stm32f4xx_dsp_stdperiph_lib um.chm (see below) that is the Library Manual.

Thedocumentation file is generated in automatic by using DOXYGEN.



Inside the Library
Inside the directory where you have unzipped the library there are some other directory like below.
STM releases the library in ANSI C, this means that it is possible to use them with any IDE.
STM to help developers, has released the ready-to-use initialization for: IAR, KEIL, RAISONANCE, TASKING and ATOLLIC.
See the blue box upstairs.
The complete list of subfolders is below.
_htmresc folder
This folder contains all packages html page resources.

Libraries folder
Rcc
This folder contains all CMSIS files and STM32F4_DSP_StdPeriph_Lib.V1.0.0.
CMSIS subfolder
This folder contains the STM32F4 CMSIS files: device peripheral, access layer and core peripheral access layer.
STM32F4_DSP_StdPeriph_Lib.V1.0.0 subfolder
Rcc driver download software
This folder contains all the subdirectories and files that make up the core of the library:
inc sub-folder contains the Peripheral's Drivers header files. They do not need to be modified by the user.
src sub-folder contains the Peripheral's Drivers source files. They do not need to be modified by the user.
All STM32F4_DSP_StdPeriph drivers are coded in strict ANSI-C and are independent from the software toolchain.

Project folder
This folder contains template projects and STM32F10x Standard Peripheral's examples.
STM32F4_StdPeriph_Examples subfolder
Thisfolder contains, for each peripheral sub-folder, the minimum set offiles needed to run a typical example on how to use this peripheral.
There is also a: readme.txt that is brief text file describing the example and how to make it work.
For each peripherals there are a lot of example for different mode of use them (polling, interrupt, DMA, etc) see below.

STM32F4_StdPeriph_Template subfolder
Thisfolder contains standard template projects for IAR, KEIL, RAISONANCE,TASKING and TrueSTUDIO toolchains.
stm32f4xx_conf.h - configuration header file
stm32f4xx_it.c - source file containing the interrupt handlers
stm32f4xx_it.h - header file including all interrupt handlers prototypes
Rcc driver download windows 10
main.c - main program body
main.h - header file for main.c
system_stm32f4xx.c - clock tree initialization,
RCC Driver Download
configure the PLL, system clock, initialize the Embedded Flash Interface, etc.
To generate this file automatically use: Clock configuration tool for STM32F40x/41x that is here

Utilities folder
Implement an abstraction layer to interact with the Human Interface resources; buttons, LEDs, LCD and COM ports (USARTs)available on STM32F4-Discovery, STM3240G-EVAL and STM3241G-EVAL.
A common API is providedto manage the LCD across the supported boards, with a separate driverfor each board stm324xg_eval_lcd.c.



Minimum requirement for STM32 to start is to fill two first words in its vector table:
First word is always initial Main Stack Pointer value
Second word is always Address of Reset Procedure
It is recommended to implement as well main fault vectors (HardFault at least)
In STM32 std library implementation with CMSIS standard, vector tableis defined in startup file, which is prepared for each family memberand each toolchain.
In case of STM32F407VGT6 (we suppose to use STM32F4-Discovery) and Atollic it is startup_stm32f4xx.s file located in the folder src inside the project, see below.
In ST library there are some additional operations put before main() function will be executed.
The most important is SystemInit() function coming from system_stm32f4xx.c file.
This function is doing configuration of clock system and some GPIO pinsin order to cooperate with external components of the MCU.
This is not necessary for standard application running.
To switch off this procedure, line 'bl SystemInit' in startup_stm32f4xx.s file should be commented (line 104 in startup file).
For each peripheral there are separate source and header files, i.e.:
To use them, it is required to use:
#include 'stm32f4xx.h'
add to the project source files for used peripherals, i.e. stm32f4xx_gpio.c for GPIO, see below

To use the peripheral PPP
in stm32f4xx_conf.h uncomment lines with peripherals you are using in applications, i.e.:
Empty interrupt procedures are present in stm32f4xx_it.c file.
All interrupt functions should be put there.
Interrupt function do not require any special coding and are: void function(void) type
Most of the peripherals has predefined from one or to two data structures which are used for the configuration.
After fill up the structure it is possible to use in PPP_Init() functions to configure registers in the peripherals.
Function and constant for each peripheral have prefix with its name, like: GPIO, TIM1 ie.:
GPIO_Init()
ADC_Channel_0
USART_IT_TXE
Most of the settings is in 1fromN convention and allow to use concatenation, like:
what means that pins 0 and 1 from will be configured in the same time
Most of the peripherals (PPP) has set of instruction:

RCC Driver Download

PPP_DeInit(...) – set all PPP register to its reset state
PPP_Init(...) – validation of the configuration for the peripheral
PPP_Cmd(ENABLE/DISABLE) – turn on/off PPP peripheral (not affects its clock)
PPP_ITConfig(...) – configuration (on/off) of sources of interrupts for PPP peripheral
PPP_GetFlagStatus(...) – read flags from the peripheral (polling)
PPP_ClearFlag(...) – clear flags from the peripheral
PPP_ClearITPendingBit(...) – clear IRQ flag

In your project you have to declare a PPP_InitTypeDef structure, e.g:
The PPP_InitStructure is a working variable located in data memory that allows you to initialize one or more instance of PPPs.
NOTE:
Before configuring a peripheral, you have to enable its clock by calling one of the following functions:
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_PPPx , ENABLE);
RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_PPPx , ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_PPPx , ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PPPx , ENABLE);

There are predefined types in stm32f4xx.h file, like:
u8 – unsigned char
u16 – unsigned short
RESET / SET
FALSE / TRUE
DISABLE / ENABLE



Consulting the Library Manual

To consult, for example, the function available for GPIO, you must choose:
see below

To see the GPIO_SetBits you must select:
GPIO_SetBits
see below
Below we need to see the function GPIO_Init.
To do this, select:

From the new window that appears, we see that there are 5 parameters to be setted, see below.

Rcc Driver Download Windows 10

Now for a complete description of the Pin, Mode, Speed, etc, it is necessary to click on it.
Below there is an example concerning the setup of GPIO.
REMEMBER: before it is necessary to define the structure and clock, see here.

Go on Top



Use the library examples


For use the examples present in the Library directory: STM32F4xx_StdPeriph_Examples
it is necessary only a Copy and Past... see the example below.
First ensure that the library directory is not read-only, see below.
We suppose to use the GPIO example: IOToggle
First copy all the files present in IOToggle directory into the directory: STM32F4xx_StdPeriph_Templates
see below
From the box that appears select: Yes to All (see below).
Rcc driver download windows 10
This folder contains all CMSIS files and STM32F4_DSP_StdPeriph_Lib.V1.0.0.
CMSIS subfolder
This folder contains the STM32F4 CMSIS files: device peripheral, access layer and core peripheral access layer.
STM32F4_DSP_StdPeriph_Lib.V1.0.0 subfolder
This folder contains all the subdirectories and files that make up the core of the library:
inc sub-folder contains the Peripheral's Drivers header files. They do not need to be modified by the user.
src sub-folder contains the Peripheral's Drivers source files. They do not need to be modified by the user.
All STM32F4_DSP_StdPeriph drivers are coded in strict ANSI-C and are independent from the software toolchain.

Project folder
This folder contains template projects and STM32F10x Standard Peripheral's examples.
STM32F4_StdPeriph_Examples subfolder
Thisfolder contains, for each peripheral sub-folder, the minimum set offiles needed to run a typical example on how to use this peripheral.
There is also a: readme.txt that is brief text file describing the example and how to make it work.
For each peripherals there are a lot of example for different mode of use them (polling, interrupt, DMA, etc) see below.

STM32F4_StdPeriph_Template subfolder
Thisfolder contains standard template projects for IAR, KEIL, RAISONANCE,TASKING and TrueSTUDIO toolchains.
stm32f4xx_conf.h - configuration header file
stm32f4xx_it.c - source file containing the interrupt handlers
stm32f4xx_it.h - header file including all interrupt handlers prototypes
main.c - main program body
main.h - header file for main.c
system_stm32f4xx.c - clock tree initialization, configure the PLL, system clock, initialize the Embedded Flash Interface, etc.
To generate this file automatically use: Clock configuration tool for STM32F40x/41x that is here

Utilities folder
Implement an abstraction layer to interact with the Human Interface resources; buttons, LEDs, LCD and COM ports (USARTs)available on STM32F4-Discovery, STM3240G-EVAL and STM3241G-EVAL.
A common API is providedto manage the LCD across the supported boards, with a separate driverfor each board stm324xg_eval_lcd.c.



Minimum requirement for STM32 to start is to fill two first words in its vector table:
First word is always initial Main Stack Pointer value
Second word is always Address of Reset Procedure
It is recommended to implement as well main fault vectors (HardFault at least)
In STM32 std library implementation with CMSIS standard, vector tableis defined in startup file, which is prepared for each family memberand each toolchain.
In case of STM32F407VGT6 (we suppose to use STM32F4-Discovery) and Atollic it is startup_stm32f4xx.s file located in the folder src inside the project, see below.
In ST library there are some additional operations put before main() function will be executed.
The most important is SystemInit() function coming from system_stm32f4xx.c file.
This function is doing configuration of clock system and some GPIO pinsin order to cooperate with external components of the MCU.
This is not necessary for standard application running.
To switch off this procedure, line 'bl SystemInit' in startup_stm32f4xx.s file should be commented (line 104 in startup file).
For each peripheral there are separate source and header files, i.e.:
To use them, it is required to use:
#include 'stm32f4xx.h'
add to the project source files for used peripherals, i.e. stm32f4xx_gpio.c for GPIO, see below

To use the peripheral PPP
in stm32f4xx_conf.h uncomment lines with peripherals you are using in applications, i.e.:
Empty interrupt procedures are present in stm32f4xx_it.c file.
All interrupt functions should be put there.
Interrupt function do not require any special coding and are: void function(void) type
Most of the peripherals has predefined from one or to two data structures which are used for the configuration.
After fill up the structure it is possible to use in PPP_Init() functions to configure registers in the peripherals.
Function and constant for each peripheral have prefix with its name, like: GPIO, TIM1 ie.:
GPIO_Init()
ADC_Channel_0
USART_IT_TXE
Most of the settings is in 1fromN convention and allow to use concatenation, like:
what means that pins 0 and 1 from will be configured in the same time
Most of the peripherals (PPP) has set of instruction:

RCC Driver Download

PPP_DeInit(...) – set all PPP register to its reset state
PPP_Init(...) – validation of the configuration for the peripheral
PPP_Cmd(ENABLE/DISABLE) – turn on/off PPP peripheral (not affects its clock)
PPP_ITConfig(...) – configuration (on/off) of sources of interrupts for PPP peripheral
PPP_GetFlagStatus(...) – read flags from the peripheral (polling)
PPP_ClearFlag(...) – clear flags from the peripheral
PPP_ClearITPendingBit(...) – clear IRQ flag

In your project you have to declare a PPP_InitTypeDef structure, e.g:
The PPP_InitStructure is a working variable located in data memory that allows you to initialize one or more instance of PPPs.
NOTE:
Before configuring a peripheral, you have to enable its clock by calling one of the following functions:
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_PPPx , ENABLE);
RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_PPPx , ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_PPPx , ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PPPx , ENABLE);

There are predefined types in stm32f4xx.h file, like:
u8 – unsigned char
u16 – unsigned short
RESET / SET
FALSE / TRUE
DISABLE / ENABLE



Consulting the Library Manual

To consult, for example, the function available for GPIO, you must choose:
see below

To see the GPIO_SetBits you must select:
GPIO_SetBits
see below
Below we need to see the function GPIO_Init.
To do this, select:

From the new window that appears, we see that there are 5 parameters to be setted, see below.

Rcc Driver Download Windows 10

Now for a complete description of the Pin, Mode, Speed, etc, it is necessary to click on it.
Below there is an example concerning the setup of GPIO.
REMEMBER: before it is necessary to define the structure and clock, see here.

Go on Top



Use the library examples


For use the examples present in the Library directory: STM32F4xx_StdPeriph_Examples
it is necessary only a Copy and Past... see the example below.
First ensure that the library directory is not read-only, see below.
We suppose to use the GPIO example: IOToggle
First copy all the files present in IOToggle directory into the directory: STM32F4xx_StdPeriph_Templates
see below
From the box that appears select: Yes to All (see below).
Below we explain you how to use KEIL and ATOLLIC IDE.

KEIL IDE

If you want to use KEIL IDE enter in the directory: MDK-ARM
and double click on: Project_uvproj
see below.
Automatically start KEIL IDE and you are ready to compile and debug the project.
Below we compile the project for STM324G-EVAL board.


Remember:
Before starting the debug, configure the emulator that you will use.

ATOLLIC IDE
First start your ATOLLIC IDE ( v.2.2.0
or higher) and click on: Browse
and select the TrueSTUDIO directory (see below).
From the window that appears click: Start using TrueSTUDIO
Now click on File and next on Import (see below).
From the new window that appears select:
General -> Existing Project into Workspace -> Next
See below.


From the new window that appears select:
Select root directory
and press:
Browse
see below.
From the new window that appears chose:
STM32F4xG_EVAL
next press:
OK
Now press Finish
See below.
Now ATOLLIC import and compile the project and if all is OK, you must see somethig like below.
Remember:
Before starting the debug, configure the emulator that you will use, see here.


Library - FAQ

If Compiler is reporting a lot of errors like:

Rcc Driver Download Windows 7

Solution
Please check whether in stm32f4xx_conf.h all used library modules are uncommented
Please check, whether USE_STDPERIPH_DRIVER constant is defined in your environment
If Linker is reporting a lot of errors like:
Lab_library.lkf:1 symbol _GPIO_WriteHigh not defined (Debug/main.o)
Solution
Please check whether all library source files are added, stm32f4xx_gpio.c in this case.






broken image