Microcontroller Embedded C Programming: Absolute Beginners
 
		About Course
==> This should be your very first course to dive into the exciting world of “Embedded Systems.” <==
This is our new course mainly targeted for absolute beginners to learn microcontroller programming using the ‘C ‘ programming language.
Please note that “Embedded C” is NOT a separate programming language. ‘Embedded C’ is rather embedded target aware programming using traditional ‘C’ programming language.
Some of the critical microcontroller-related ‘C’ concepts such as
- Importance of bitwise operators
- Usage of bit manipulation techniques to program MCU peripheral registers
- accessing memory-mapped registers using pointers
- pointers and casting
- structures, bitfields, unions, and bit extraction techniques
- representing hardware registers details and configuring them using ‘C’ structure definitions
- Usage of const and volatile type qualifiers
- Interpret complex variable definitions involving the combination of const and volatile
- The precise usage of const pointers, const data, volatile const, with pointer and non-pointer variables
- The behavior of the code during compiler optimization and solution using volatile
- Functions and friends
- Data types, variables definitions, storage class specifiers and much more
- Loops: while, for, do. while
- MCU internal architecture and programming peripherals
- Interfacing projects
All these concepts are discussed with clear examples and writing code for the target embedded board.
According to 2017 embedded dot com survey still ‘C’ is one of the most widely used programming languages for embedded code development
This course gives particular emphasis to learn ‘C’ programming concepts practically for microcontroller use cases.
Hardware:
1. You need ARM Cortex M4 based STM32F407 DISCOVERY board from ST if you want to try out code on the target.
2. Additional interfacing components may be required for interfacing projects
3. You can also be able to follow this course if you have any other boards from ST such as Nucleo or evaluation.
Software:
1. In this course, Eclipse-based STM32CubeIDE is used as the IDE ( works on Windows/Linux/Mac) (FREE)
Learning order of FastBit Embedded Brain Academy Courses,
If you are a beginner in the field of embedded systems, then you can take our courses in the below-mentioned order.
This is just a recommendation from the instructor for beginners.
1) Microcontroller Embedded C Programming: absolute beginners(Embedded C)
2) Embedded Systems Programming on ARM Cortex-M3/M4 Processor(ARM Cortex M4 Processor specific)
3) Mastering Microcontroller with Embedded Driver Development(MCU1)
4) Mastering Microcontroller: TIMERS, PWM, CAN, RTC,LOW POWER(MCU2)
5) Mastering Microcontroller: STM32-LTDC, LCD-TFT, LVGL(MCU3)
6) Embedded System Design using UML State Machines(State machine)
7) Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)
8) ARM Cortex M Microcontroller DMA Programming Demystified(DMA)
9) STM32Fx Microcontroller Custom Bootloader Development(Bootloader)
10) Embedded Linux Step by Step using Beaglebone Black(Linux)
11) Linux device driver programming using Beaglebone Black(LDD1)
What Will You Learn?
- 'C' programming from scratch
- Data types,variables, declarations,
- Importance of Bit-Wise operators in "Embedded" programming
- Bit manipulation techniques using bit-wise operators and examples
- Bit extraction and working with memory mapped peripheral registers
- Other operators of 'C' (arithmatic, logical, relation, assignment )
- Functions in 'C'
- Implicit and explicit casting and its importance
- Pointers and casting
- Pointers arithmetic and importance of pointer datatypes
- Accessing memory mapped peripheral registers using pointers
- Structures and unions
- Importance of structures in peripheral register access
- Structure and bit fields
- Configuring peripheral register addresses using bit fields
- Structures and pointers
- interfacing LEDs, Keypad
- Const and volatile type qualifiers
- importance of volatile during compiler optimization
- const data, const pointer, cont volatile explanation with examples
- Importance of const
- Loops : for, while, do while
Course Content
Introduction
- 
										– Programming languages for Embedded Systems02:40
- 
										A Message from the Professor
- 
										– History of C and standardization02:43
IDE installation
- 
										– Downloading IDE01:39
- 
										– Downloading IDE02:28
- 
										– Key features of the STM32CubeIDE02:08
- 
										– Installing STM32CubeIDE00:43
- 
										– Installing STM32CubeIDE on Linux02:01
- 
										– Installing compiler GCC for host01:43
- 
										– Installing compiler GCC for host WINDOWS06:12
- 
										– Installing compiler GCC for host LINUX01:26
- 
										– Installing compiler GCC for host MAC01:09
- 
										– Importing course projects in to workspace11:08
- 
										– Creating a project for the HOST03:41
- 
										– Creating a project for the Target04:26
- 
										– Meet the embedded target of this course03:27
Your first C program
- 
										– OnlineGDB web tool00:57
- 
										– Printf and Hello World11:57
- 
										– Printf exercise solution03:44
- 
										– Escape sequences in C03:48
- 
										– Printf exercise solution04:11
- 
										– Printf exercise solution03:32
- 
										– Commenting in C03:39
Data types and variables
- 
										– Data types in C05:09
- 
										– C Integer data types and value ranges05:20
- 
										– Char data type and variable definition05:39
- 
										– Variable definition exercise08:30
- 
										– Range calculation for char data type07:35
- 
										– Integer data type short int and value range03:05
- 
										– Integer data type int and long01:17
- 
										– Sizeof06:07
- 
										– Variables naming rules and definition vs declaration09:10
- 
										– Declaration vs definition An illustration02:49
- 
										– Variables scope and illustration09:01
- 
										– Variables scope and illustration contd04:03
- 
										– Summary of local and global variables01:03
Address of variable
- 
										– Address of variables04:37
- 
										– Address of variables contd08:16
Storage classes
- 
										– Storage class specifiers in C06:55
- 
										– Use cases of static with variables06:16
- 
										– Use cases of static with functions03:52
- 
										– Extern storage class specifier01:18
- 
										– ASCII codes06:26
functions
- 
										– Introduction to functions in C09:51
- 
										– Function prototypes03:08
- 
										– Returning data from a function02:13
- 
										– Function exercise12:37
- 
										– Typecasting in C07:45
- 
										– Typecasting in C contd01:39
Microcontroller and Hello World
- 
										– Embedded14:06
- 
										– Testing printf over ARM Cortex M4 ITMSWO line08:12
- 
										– Issues with IDE03:52
- 
										– Testing printf over OpenOCD semihosting05:59
- 
										– Run Sizeof on Embedded Target01:20
- 
										– Sizeof testing04:38
- 
										– Compiler settings on STM32CubeIDE04:46
Build process
- 
										– Embedded project build process08:38
Analyzing Embedded C code
- 
										– What is a Microcontroller13:38
- 
										– Code memory of the microcontroller04:02
- 
										– Code and Data of the program using memory browser09:32
- 
										– Analyzing ELF file using GNU tools12:08
- 
										– Disassembly09:23
- 
										– IDE option for Instruction level debugging01:00
Data types to manipulate floating point data
- 
										– Manipulating decimal numbers in C02:30
- 
										– Single vs double precision03:39
- 
										– Working with float and double variables06:32
Taking input from the user using scanf
- 
										– Scanf introduction03:54
- 
										– Scanf exercise implementation12:47
- 
										– Scanf exercise implementation contd03:51
- 
										– Scanf exercise01:00
- 
										– Scanf exercise implementation02:54
- 
										– Scanf and float with scientific notation02:45
Pointers
- 
										– Pointers in C02:56
- 
										– Pointer variables and pointer data types06:22
- 
										– Pointer variables and initialization05:16
- 
										– Read and Write operation on pointers03:52
- 
										– Pointer exercise implementation06:34
- 
										– Significance of pointer data types08:17
- 
										– Significance of pointer data types09:43
Importance of stdinth
- 
										– Importance of stdinth10:47
Operators
- 
										– Operators in C10:06
- 
										– Unary operator in C04:26
- 
										– Unary operators with pointers01:43
- 
										– Relational operators in C03:48
- 
										– Logical operators in C05:58
decision making
- 
										– if statement09:17
- 
										– if statement exercise solution04:30
- 
										– if and else03:21
- 
										– if and else exercise implementation part04:55
- 
										– if and else exercise implementation part204:10
- 
										– if and else exercise implementation part04:57
- 
										– if02:14
- 
										– ifelseif ladder exercise01:10
- 
										– ifelseif ladder exercise solution08:55
- 
										– Conditional operator06:43
- 
										– switch case statement in C04:44
- 
										– switch case exercise01:59
- 
										– switch case exercise solution07:38
- 
										– switch case exercise solution contd02:55
Bitwise operators
- 
										– Bitwise operators in C05:51
- 
										– Bitwise AND and bitwise OR01:05
- 
										– Applicability of bitwise operators Testing of bits04:25
- 
										– Finding a number even or odd using testing of bits01:44
- 
										– Applicability of bitwise operators Setting of bits02:20
- 
										– Applicability of bitwise operators Clearing of bits04:03
- 
										– Applicability of bitwise operators xor02:35
Embedded C coding exercise for LED
- 
										– Coding to Turn on an LED05:27
- 
										– Controlling IO pin using software01:42
- 
										– Processor addressable memory regions05:46
- 
										– STM32 memory map03:56
- 
										– Memory mapped peripheral registers and IO access05:35
- 
										– Procedure to turn ON the LED02:47
- 
										– Enabling peripheral clock05:51
- 
										– Calculating peripheral register addresses04:19
- 
										– LED ON exercise coding16:06
Bitwise shift operators
- 
										– Bitwise right shift operator03:52
- 
										– Bitwise left shift operator03:17
- 
										– Applicability of bitwise shift operators04:17
- 
										– Modifying LED on exercise using bitwise shift operators02:28
- 
										– Bit Extraction03:08
Looping
- 
										– Looping in C01:10
- 
										– While loop02:53
- 
										– while loop exercise02:12
- 
										– while loop and semicolon03:31
- 
										– while loop exercise05:49
- 
										– do while loop03:04
- 
										– for loop04:14
- 
										– for loop exercise03:53
- 
										– for loop number pyramid exercise01:31
- 
										– for loop exercise solution03:44
- 
										– modifying LED on with software delay01:44
- 
										– LED toggle using software delay06:34
Type qualifier const
- 
										– const type qualifier08:02
- 
										– placements of const variables in memory03:14
- 
										– const usage and different case studies05:16
- 
										– const usage and different case studies contd04:09
Pinread
- 
										– IO pin read exercise03:11
- 
										– IO pin read exercise implementation09:38
Optimization
- 
										– Compiler optimization and flags03:58
- 
										– Different compiler optimization levels03:48
- 
										– Analyzing pin read exercise disassembly with O0 and O206:44
volatile type qualifier
- 
										– volatile and effect of optimization06:15
- 
										– When to use volatile qualifier04:06
- 
										– Using volatile to fix issues with the pinread exercise02:42
- 
										– Using volatile with ISR Part104:30
- 
										– Using volatile with ISR Part03:25
- 
										– Usage of const and volatile together04:16
Structures and Bit fields
- 
										– Introduction to structures03:42
- 
										– Accessing structure member elements09:09
- 
										– Sizeof of a structure02:43
- 
										– Aligned and un01:59
- 
										– Structure padding09:44
- 
										– Calculating structure size manually with and without padding03:05
- 
										– Assembly code analysis of packed and non packed structure05:39
- 
										– Typedef and structure06:02
- 
										– Structures and pointers10:43
- 
										– Structure exercise01:59
- 
										– Structure exercise implementation07:25
- 
										– Structure and bit fields07:22
- 
										– Structure and bit fields contd02:24
Unions
- 
										– Unions05:31
- 
										– Applicability of unions05:00
Usage of bitfields in embedded code
- 
										– Bit10:20
- 
										– Bit00:58
- 
										– Bit01:30
- 
										– Modifying led toggle exercise with structures and bit fields07:26
- 
										– Testing01:30
Keypad interfacing
- 
										– Keypad interfacing04:52
- 
										– Why pull04:44
- 
										– Detecting key press event02:44
- 
										– Flow chart for implementation07:37
- 
										– Keypad key read code implementation11:59
- 
										– Delay analysis04:38
Arrays
- 
										– Arrays in C06:24
- 
										– Read14:37
- 
										– Passing array to a function07:36
- 
										– Swapping of arrays08:54
- 
										– Swapping of arrays contd02:14
Strings
- 
										– Strings in C09:41
- 
										– String literal05:12
- 
										– String variable Vs string literal18:49
- 
										– Inputting a string04:33
- 
										– Scanf and scanset06:58
- 
										– Exercise16:29
PreProcessor directives in C
- 
										– Pre13:39
- 
										– Conditional compilation directives13:15
- 
										– defined operator05:15
- 
										– Modifying led toggle exercise with macros05:04
Earn a certificate
Add this certificate to your resume to demonstrate your skills & increase your chances of getting noticed.
 
				 
 