Mô tả

==> 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

  1. Importance of bitwise operators

  2. Usage of bit manipulation techniques to program MCU peripheral registers

  3. accessing memory-mapped registers using pointers

  4. pointers and casting

  5. structures, bitfields, unions, and bit extraction techniques

  6. representing hardware registers details and configuring them using 'C' structure definitions

  7. Usage of const and volatile type qualifiers

  8. Interpret complex variable definitions involving the combination of const and volatile

  9. The precise usage of const pointers, const data, volatile const, with pointer and non-pointer variables

  10. The behavior of the code during compiler optimization and solution using volatile

  11. Functions and friends

  12. Data types, variables definitions, storage class specifiers and much more

  13. Loops: while, for, do. while

  14. MCU internal architecture and programming peripherals

  15. 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)

Bạn sẽ học được gì

Yêu cầu

Nội dung khoá học

31 sections

Introduction

5 lectures
About the instructor
00:17
Programming languages for Embedded Systems
02:40
Course repository
00:02
History of 'C' and standardization
02:43
Important Note
00:42

IDE installation

15 lectures
Downloading IDE
01:39
Downloading IDE
02:28
Key features of the STM32CubeIDE
02:08
Installing STM32CubeIDE
00:43
Installing STM32CubeIDE on Linux
02:01
Installing compiler (GCC) for host
01:43
Installing compiler (GCC) for host (WINDOWS)
03:04
Installing compiler (GCC) for host (LINUX)
01:26
Installing compiler (GCC) for host (MAC)
01:09
Importing course projects in to workspace
11:46
Creating a project for the HOST
03:41
Creating a project for the Target
04:26
FPU warning fix
00:33
Hardware/Software Requirements
00:05
Meet the embedded target of this course
03:27

Your first 'C' program

7 lectures
OnlineGDB web tool
00:57
Printf and Hello World
11:57
Printf exercise solution
03:44
Escape sequences in 'C'
03:48
Printf exercise solution
04:10
Printf exercise solution
03:31
Commenting in 'C'
03:39

Data types and variables

13 lectures
'C' Integer data types and value ranges
05:20
Data types in 'C'
05:09
Char data type and variable definition
05:39
Variable definition exercise
08:29
Range calculation for 'char' data type
07:35
Integer data type 'int' and 'long'
01:17
Sizeof
06:06
Integer data type 'short int' and value range
03:05
Variables naming rules and definition vs declaration
09:10
Declaration vs definition : An illustration
02:49
Variables scope and illustration contd
04:03
Variables scope and illustration
09:01
Summary of local and global variables
01:03

Address of variable

2 lectures
Address of variables
04:37
Address of variables contd.
08:16

Storage classes

5 lectures
Storage class specifiers in 'C'
06:55
Use cases of 'static' with variables
06:16
Use cases of 'static' with functions
03:52
'Extern' storage class specifier
01:18
ASCII codes
06:26

functions

6 lectures
Introduction to functions in 'C'
09:51
Function prototypes
03:08
Returning data from a function
02:13
Function exercise
12:37
Typecasting in 'C'
07:45
Typecasting in 'C' contd
01:39

Microcontroller and Hello World

7 lectures
Embedded - 'Hello World'
14:06
Testing printf over ARM Cortex M4 ITM+SWO line
08:12
Issues with IDE
03:52
Testing printf over OpenOCD semihosting
05:59
Run Sizeof on Embedded Target
01:19
Sizeof testing
04:38
Compiler settings on STM32CubeIDE
04:46

Build process

1 lectures
Embedded project build process
08:38

Analyzing Embedded C code

6 lectures
What is a Microcontroller ?
13:38
Code memory of the microcontroller
04:02
Code and Data of the program using memory browser
09:32
Analyzing ELF file using GNU tools
12:08
Disassembly
09:22
IDE option for Instruction level debugging
01:00

Data types to manipulate floating point data

3 lectures
Manipulating decimal numbers in 'C'
02:29
Single vs double precision
03:39
Working with float and double variables
06:32

Taking input from the user using scanf()

6 lectures
Scanf introduction
03:54
Scanf exercise implementation
12:46
Scanf exercise implementation contd.
03:51
Scanf exercise
01:00
Scanf exercise implementation
02:54
Scanf and float with scientific notation
02:45

Pointers

7 lectures
Pointers in 'C'
02:56
Pointer variables and initialization
05:16
Pointer variables and pointer data types
06:22
Read and Write operation on pointers
03:52
Pointer exercise implementation
06:34
Significance of pointer data types
08:17
Significance of pointer data types
09:43

Importance of <stdint.h>

1 lectures
Importance of <stdint.h>
10:47

Operators

5 lectures
Operators in 'C'
10:06
Unary operator in 'C'
04:26
Unary operators with pointers
01:42
Relational operators in 'C'
03:48
Logical operators in 'C'
05:58

decision making

15 lectures
'if' statement
09:17
if statement exercise
00:07
'if' statement exercise solution
04:30
'if' and 'else'
03:21
'if' and 'else' exercise implementation part-1
04:55
'if' and 'else' exercise implementation part-2
04:10
'if' and 'else' exercise implementation part-3
04:57
'if -else-if' ladder statements
02:14
'if-else-if' ladder exercise
01:10
'if-else-if' ladder exercise solution
08:55
Conditional operator
06:43
switch case statement in 'C'
04:44
switch case exercise
01:59
switch case exercise solution
07:38
switch case exercise solution contd.
02:55

Bitwise operators

7 lectures
Bitwise operators in 'C'
05:51
Bitwise AND and bitwise OR
01:04
Applicability of bitwise operators : Testing of bits
04:25
Finding a number even or odd using testing of bits
01:44
Applicability of bitwise operators : Clearing of bits
04:03
Applicability of bitwise operators : xor
02:35
Applicability of bitwise operators : Setting of bits
02:20

Embedded C coding exercise for LED

9 lectures
Coding to Turn on an LED
05:27
Controlling IO pin using software
01:42
Processor addressable memory regions
05:46
STM32 memory map
03:56
Memory mapped peripheral registers and IO access
05:35
Procedure to turn ON the LED
02:47
Enabling peripheral clock
05:51
Calculating peripheral register addresses
04:19
LED ON exercise coding
16:05

Bitwise shift operators

5 lectures
Bitwise right shift operator
03:52
Bitwise left shift operator
03:17
Applicability of bitwise shift operators
04:17
Modifying LED on exercise using bitwise shift operators
02:28
Bit Extraction
03:08

Looping

12 lectures
Looping in 'C'
01:10
While loop
02:52
while loop exercise
02:12
while loop and semicolon
03:31
while loop exercise
05:49
'do while' loop
03:04
'for' loop
04:14
'for' loop exercise
03:53
'for' loop number pyramid exercise
01:31
'for' loop exercise solution
03:44
modifying LED on with software delay
01:44
LED toggle using software delay
06:34

Type qualifier 'const'

4 lectures
'const' type qualifier
08:02
placements of 'const' variables in memory
03:14
'const' usage and different case studies
05:15
'const' usage and different case studies contd
04:09

Pin-read

2 lectures
IO pin read exercise
03:11
IO pin read exercise implementation
09:38

Optimization

3 lectures
Compiler optimization and flags
03:58
Different compiler optimization levels
03:48
Analyzing pin read exercise disassembly with O0 and O2
06:44

'volatile' type qualifier

6 lectures
volatile and effect of optimization
06:15
When to use volatile qualifier ?
04:06
Using volatile to fix issues with the pin-read exercise
02:42
Using 'volatile' with ISR Part-1
04:30
Using 'volatile' with ISR Part-2
03:25
Usage of const and volatile together
04:16

Structures and Bit fields

13 lectures
Introduction to structures
03:42
Accessing structure member elements
09:09
Sizeof of a structure
02:43
Aligned and un-aligned data storage
01:59
Structure padding
09:44
Calculating structure size manually with and without padding
03:05
Assembly code analysis of packed and non packed structure
05:39
Typedef and structure
06:02
Structures and pointers
10:43
Structure exercise
01:59
Structure exercise implementation
07:25
Structure and bit fields
07:22
Structure and bit fields contd.
02:24

Unions

2 lectures
Unions
05:31
Applicability of unions
05:00

Usage of bit-fields in embedded code

5 lectures
Bit-field exercise : Creating bit-field structure for peripheral registers
10:20
Bit-field structure for RCC_AHB1ENR
00:58
Bit-field structure for GPIOx_ODR
01:30
Modifying led toggle exercise with structures and bit fields
07:26
Testing
01:30

Keypad interfacing

6 lectures
Keypad interfacing
04:52
Why pull-up resistors?
04:44
Detecting key press event
02:43
Flow chart for implementation
07:37
Keypad key read code implementation
11:58
Delay analysis
04:38

Arrays

5 lectures
Arrays in 'C'
06:23
Read-Write operation on an array
14:36
Passing array to a function
07:36
Swapping of arrays
08:54
Swapping of arrays contd.
02:14

Strings

6 lectures
Strings in 'C'
09:41
String literal
05:21
String variable Vs string literal
18:49
Inputting a string
04:33
Scanf and scanset
06:58
Exercise
16:28

Pre-Processor directives in 'C'

5 lectures
Pre-Processor directives in 'C'
13:38
Conditional compilation directives
13:15
'defined' operator
05:15
Modifying led toggle exercise with macros
05:04
BONUS LECTURE
01:52

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.