element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
STM32F4DISCOVERY Expansion Boards
  • Products
  • Dev Tools
  • STM32F4DISCOVERY Expansion Boards
  • More
  • Cancel
STM32F4DISCOVERY Expansion Boards
Forum Programming error in IAR embedded workbench
  • Blog
  • Forum
  • Documents
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join STM32F4DISCOVERY Expansion Boards to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Verified Answer
  • Replies 9 replies
  • Subscribers 7 subscribers
  • Views 3863 views
  • Users 0 members are here
Related

Programming error in IAR embedded workbench

philip-1992
philip-1992 over 12 years ago

Hi there I found a program which basicly an analogue input is given to PC0 via a potentiometer and through a variable named "ConvertedValue" the user can monitor the actual value of resistance applied by the pot. owever as I tried to Download the code to the board I am getting this error: Error[Li005]: no definition for "SystemInit" [referenced from C:\Users\Philip\Desktop\Potentiometer Read\Project\LCD_35T\EWARM\Discover-More\Obj\startup_stm32f4xx.o]. I checked the whole code and that function isn't referenced anywhere. So my guess is that is has to do with some sort of start up file.. Any guess on how to solve this problem?? The code is below Thank you in advance.

 

#include "stm32f4_discovery.h"

#include "stm32f4_discovery_lcd.h"

#include "stm32f4xx_adc.h"

#include "stm32f4xx_gpio.h"

#include "stm32f4xx_rcc.h"

 

 

int ConvertedValue = 0; //Converted value readed from ADC

 

 

void adc_configure(){

ADC_InitTypeDef ADC_init_structure; //Structure for adc confguration

GPIO_InitTypeDef GPIO_initStructre; //Structure for analog input pin

//Clock configuration

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//The ADC1 is connected the APB2 peripheral bus thus we will use its clock source

RCC_AHB1PeriphClockCmd(RCC_AHB1ENR_GPIOCEN,ENABLE);//Clock for the ADC port!! Do not forget about this one image

//Analog pin configuration

GPIO_initStructre.GPIO_Pin = GPIO_Pin_0;//The channel 10 is connected to PC0

GPIO_initStructre.GPIO_Mode = GPIO_Mode_AN; //The PC0 pin is configured in analog mode

GPIO_initStructre.GPIO_PuPd = GPIO_PuPd_NOPULL; //We don't need any pull up or pull down

GPIO_Init(GPIOC,&GPIO_initStructre);//Affecting the port with the initialization structure configuration

//ADC structure configuration

ADC_DeInit();

ADC_init_structure.ADC_DataAlign = ADC_DataAlign_Right;//data converted will be shifted to right

ADC_init_structure.ADC_Resolution = ADC_Resolution_12b;//Input voltage is converted into a 12bit number giving a maximum value of 4096

ADC_init_structure.ADC_ContinuousConvMode = ENABLE; //the conversion is continuous, the input data is converted more than once

ADC_init_structure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;// conversion is synchronous with TIM1 and CC1 (actually I'm not sure about this one :/)

ADC_init_structure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;//no trigger for conversion

ADC_init_structure.ADC_NbrOfConversion = 1;//I think this one is clear image

ADC_init_structure.ADC_ScanConvMode = DISABLE;//The scan is configured in one channel

ADC_Init(ADC1,&ADC_init_structure);//Initialize ADC with the previous configuration

//Enable ADC conversion

ADC_Cmd(ADC1,ENABLE);

//Select the channel to be read from

ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_144Cycles);

}

int adc_convert(){

ADC_SoftwareStartConv(ADC1);//Start the conversion

while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));//Processing the conversion

return ADC_GetConversionValue(ADC1); //Return the converted data

}

int main(void){

adc_configure();//Start configuration

    while(1){//loop while the board is working

     ConvertedValue = adc_convert();//Read the ADC converted value

    }

}

  • Sign in to reply
  • Cancel
Parents
  • michaelkellett
    0 michaelkellett over 12 years ago

    I don't use the IAR tools for ARM but this problem can occur with the Keil (or any other) tools as well. You just need to do some detective work - look in startup_stm32f4xx.c (or perhaps some other kind of source) and find where it refers to SystemInit - could well be in a header file, then make sure you include the path to the source and header files for SystemInit (you may need to search for these in your installation of the IAR tools).

    The other possiblity is to check that you installed the tools correctly (this may be easier said than done ).

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Reject Answer
    • Cancel
  • philip-1992
    0 philip-1992 over 12 years ago in reply to michaelkellett

    Ok I found what the problem was. I had to remove startup_stm32f4xx.s from headers image Thank you. Now that I got it to work actually the aim of all this is to interface with an LCD and Displays the value of the pot on screen in order to learn how to interface with an LCD screen. However as I am using a 10kOhm pot I noticed that the code actually converts the value to a MAXIMUM of 4096 (ADC_init_structure.ADC_Resolution = ADC_Resolution_12b;//Input voltage is converted into a 12bit number giving a maximum value of 4096) so I tried to change that line to "ADC_init_structure.ADC_Resolution = ADC_Resolution_14b" and the following error occurs: Error[Pe020]: identifier "ADC_Resolution_14b" is undefined. Need I define it somewhere in the program?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • philip-1992
    0 philip-1992 over 12 years ago in reply to philip-1992

    Never mind. I just read the stm32f4 manual and it has the following configurable resolution: 12bit, 10bit, 8bit and 6 bit

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • philip-1992
    0 philip-1992 over 12 years ago in reply to philip-1992

    Never mind. I just read the stm32f4 manual and it has the following configurable resolution: 12bit, 10bit, 8bit and 6 bit

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube