====== C/C++ Language Embedded Programming Fundamentals ======
{{:en:iot-open:czapka_b.png?50| General audience classification icon }}{{:en:iot-open:czapka_e.png?50| General audience classification icon }}\\
The following sub-chapters cover programming fundamentals in C/C++, which comply with most C/C++ notations.
Those who feel comfortable in programming will find these chapters somewhat introductory, while for those having no or little experience, it is highly recommended to cover this introduction. This chapter and its sub-chapters target the basics and general syntax of C/C++ programming for different platforms, including Arduino, Espressif, Nordic, STM32, and partially for Raspberry Pi devices; however, in any case, the programming environment configuration is different for every platform. The Arduino programming framework is common for many MCU manufacturers of the IoT Edge class devices in bare metal programming mode, even if it brings some overhead and does not let the developer push the devices to their limits. To enjoy full power, efficiency and control of the specific device, one needs to use a dedicated SDK and Framework, but for teaching purposes and many even professional applications, Arduino Framework is suitable and a good balance between the cost of the development and the result.
This manual refers to the particular versions of the software available at the moment of writing this book. Accessing specific features may change over time along with the evolution of the platform. Please refer to the attached documentation (if any) and browse Internet resources to find the latest guidance on configuring specific development platforms when in doubt.
The following chapters discuss in short C++ programming principles:
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:data_types_and_variables]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:operators]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:program_structures]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:loops]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:functions]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:structuresandclasses]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:timing]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:digital_io]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:analog_io]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:interrupts]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:programmingpatterns]],
* [[en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:hardwarespecific]].