Index
Note: Page numbers followed by “f” indicate figures, “t” indicate tables.
A
Aborting delay of FreeRTOS,
148
Absolute maximum ratings,
31t
Access individual bits, in MikroC Pro,
69
Acorn RISC Machine (ARM),
15
Analog comparator modules,
Analog-to-digital converters (ADCs), ,
30
ARM Cortex microcontroller development boards
EasyMX Pro V7 For STM32,
35
EasyMx Pro V7 for Tiva,
39
mbed application board,
38
STM32F4DISCOVERY board,
36
Tiva EK-TM4C123GXL LaunchPad,
42
analog-to-digital converters,
30
built-in temperature sensor,
30
Cortex-M series
digital-to-analog converter,
31
electrical characteristics,
31
external interrupt controller,
30
general purpose inputs and outputs,
27
nested vectored interrupt controller,
30
processor performance measurement,
18
STM32F407VGT6 microcontroller
internal block diagram of,
21
Assembly listing, in MikroC Pro,
89
Auto reload register (TIMx_ARR),
362
B
Battery-operated portable applications,
15
Bit data type, in MikroC Pro,
70
Bootloader program,
44,
52
Brown-out detectors,
Built-in temperature sensor,
30
C
Car park management system
project 55: car park control,
397
Ccm, memory type specifiers,
69
Central processing unit (CPU),
Changing LED flashing rate,
176
Choosing scheduling algorithm,
108
Clicker 2 for STM32 development board
On-board mikroBUS sockets,
50
On-board push-button switches,
48
programming on-board microcontroller,
52
Clock,
circuit of STM32F407VGT6 microcontroller
external clock sources,
23
internal clock sources,
24
security system enable,
74
Code, memory type specifiers,
69
Communicating with Arduino,
315
Compiler case sensitivity,
114
Compiling template program,
115
Complex instruction computer (CISC), ,
12
Complex real-time systems,
97
Configurable exceptions,
70
Contact bouncing problem,
357
Controlling Buggy
Controlling flashing of LED,
242
Co-operative scheduling,
99
Cortex-M4 based microcontrollers, interrupts in
internal interrupts (timer interrupts),
361
project 44-External interrupt based event counter,
354
project 45-Multiple external interrupts,
358
project 46-Generating waveform using timer interrupt,
363
project 47-External interrupt with timer interrupt,
365
STM32F407 interrupts
Cortex-M series
Counter register (TIMx_CNT),
362
Creating new task, FreeRTOS task-related functions,
121
Critical sections
project 42: critical sections-sharing UART,
339
project 43: suspending scheduler,
345
suspending scheduler,
344
Crystal oscillator connection,
26f
Current sink/source capability,
10
D
Data memory,
Data types of FreeRTOS,
118
Deferred interrupt processing,
372,
377
Digital signal processing applications,
Digital-to-analog converter,
31
Displaying task
Display the free processor time,
324
Dynamic priority scheduling,
108
E
EasyMX Pro V7
Electrical characteristics,
31
Electrically erasable programmable read only memory (EEPROM),
Embedded controller,
Erasable programmable read only memory (EPROM),
Event groups
creating and deleting,
236
project 25-sending internal and external temperature data to PC,
238
project 26-controlling flashing of an LED,
242
project 27-GPS based project,
246
related functions, from interrupt service routine,
382
setting, clearing, waiting For event group bits, and getting event group bits,
236
Example projects
project 31-square wave generation with adjustable frequency,
271
project 32: frequency sweep waveform generator,
275
project 33: RGB light controller,
279
project 34: home alarm system with keyboard,
281
project 35: ultrasonic car parking with buzzer,
292
project 36: stepper motor project,
302
project 37: communicating with Arduino,
315
External clock
pulse,
External high-speed clock
with timer interrupt,
365
External interrupt controller (EXTI),
30
External Li-polymer battery,
50f
External resistor-capacitor timing components,
F
Falling trigger selection register (EXTI_FTSR),
352
FIFO (First In First Out),
203
Finite-state machine (FSM),
99
First come first served,
107
Flash electrically erasable programmable read only memory,
Flashing at different rates after receiving notifications,
335
FreeRTOS
API function calls from ISR
deferred interrupt processing,
372
event group related functions from ISR,
382
project 48-using function xTaskResumeFromISR(),
374
project 49-deferred interrupt processing,
377
project 50-using function xTaskNotifyFromISR(),
377
project 51-using function xEventGroupSetBitsFromISR(),
383
project 52-using functions xTimerStartFromISR() and xTimerChangePeriodFromISR(),
387
project 53-using functions xSemaphoreTakeFromISR() and xSemaphoreGive(),
391
project 54-using functions xQueueSendFromISR() and xQueueReceive(),
393
queue related functions,
391
semaphore related functions,
390
task related functions,
373
timer related functions,
386
xHigherPriorityTaskWoken parameter,
372
compiler case sensitivity,
114
compiling template program,
115
developing project files,
112
headers files path and source files path,
114
installing from MikroElektronika web site,
111
project 9-displaying a task name, number of tasks, and tick count on the LCD,
148
project 10-7-segment 2-digit multiplexed LED display counter,
151
project 11-7-segment 4-digit multiplexed LED display counter,
159
project 12-7-segment 4-digit multiplexed LED display event counter,
163
project 13-traffic lights controller,
167
project 14-changing LED flashing rate,
176
project 15-sending data to a PC over USB serial link,
181
project 16-changing LED flashing rate from the PC keyboard,
189
project 17-displaying the task list on PC screen,
192
project 19-displaying the task info on the PC screen,
195
project 20-displaying the task state on the PC screen,
198
task-related functions
project 1-flashing an LED every second,
122
project 2-flashing two LEDs, one every second, other one every 200 ms,
125
Project 2-flashing two LEDs, one every second, other one every 200 ms ?,
122
project 3-suspending and resuming task,
128
project 4-flashing LEDs and deleting task,
130
project 5-flashing an LED using function vTaskDelayUntil(),
134
project 6-flashing LED and push-button switch at different priorities,
136
project 7-getting/setting task priorities,
137
resuming suspended task,
128
running at fixed intervals,
134
using LCD
connecting LCD to Clicker 2 for STM32 development board,
142
project 8-displaying text on LCD,
144
task name, number of tasks, and tick count,
147
yield to another task of equal priority,
148
Frequency sweep waveform generator,
275
G
Games-based applications,
14
General purpose inputs and outputs (GPIO),
27
GPIO_Alternate_Function_Enable,
68
Generate square waveform,
263
Generating waveform using timer interrupt,
363
H
H-bridge motor direction control,
428f
Headers files path, for FreeRTOS,
114
High-level languages,
High-speed external (HSE),
23
High-speed internal (HIS),
24
Home alarm system, with keyboard,
281
I
Idle task and idle task hook
project 39: display the free processor time,
324
Installing from MikroElektronika web site,
111
Instruction cycle,
Integrated development environments support
System Workbench for STM32 by AC6,
57
Integrated inter connect (I2C),
Internal clock
Internal high-speed clock enable,
74
Internal interrupts (timer interrupts),
361
Internal oscillator of microcontroller,
Internal resistor-capacitor timing components,
Interrupt for button at port pin PA10 (on-board button),
359
Interrupt mask register (EXTI_IMR),
352
Interrupts,
and exceptions
interrupt service routine,
71
Interrupt service routine (ISR), ,
71
Interrupt vector address,
K
L
LCD drivers,
LCD, using (FreeRTOS)
connecting LCD to Clicker 2 for STM32 development board,
142
project 8-displaying text on LCD,
144
task name, number of tasks, and tick count,
147
Longest remaining time first,
107
Low power
Low speed external (LSE),
24
Low-speed internal (LSI),
24
M
Macro definitions, FreeRTOS,
118
Memory,
Microcomputer systems
complex instruction computer,
12
reduced instruction set computer,
12
microcontroller features
analog comparator modules,
analog-to-digital converter,
Brown-out detectors,
clock,
current sink/source capability,
10
integrated inter connect,
interrupts,
LCD drivers,
reset input,
serial input-output,
serial peripheral interface,
supply voltage,
timers,
watchdog,
microcontroller systems
electrically erasable programmable read only memory,
erasable programmable read only memory,
flash electrically erasable programmable read only memory,
programmable read only memory,
random access memory,
read only memory,
Microcontroller development kit,
MikroBUS pin configurations,
51f
access individual bits,
69
creating new project
uploading executable code,
78
general purpose input-output
GPIO_Alternate_Function_Enable,
68
interrupts and exceptions
interrupt service routine,
71
memory type specifiers,
69
simulation
Mobile robot project
project 57: controlling Buggy lights,
431
project 58: controlling Buggy motors,
432
project 59: obstacle avoiding Buggy,
438
project 60: controlling Buggy remotely,
451
Multilevel queue scheduling,
108
Multiple external interrupts,
358
2-digit multiplexed LED display counter,
151
4-digit multiplexed LED display counter,
159
4-digit multiplexed LED display event counter,
163
Multiplexed LED applications,
152
Multitasking
choosing scheduling algorithm,
108
real-time operating system, need for,
98
task scheduling algorithms
co-operative scheduling,
99
other scheduling algorithms,
107
preemptive and nonpreemptive scheduling difference,
107
preemptive scheduling,
105
round-robin scheduling,
104
scheduling algorithm goals,
106
N
Nested vectored interrupt controller (NVIC),
30,
349
Nonmaskable interrupt (NMI),
70,
348
Nonpreemptive scheduling,
99
O
Obstacle avoiding Buggy,
438
On-board mikroBUS sockets,
50
On-board mikroProg programmer,
39
On-board push-button switches,
48
ON-OFF temperature controller,
214
Open-drain output pin,
28f
Output files, in MikroC Pro,
93
Oven temperature control system, microcontroller base,
3f
P
Pending register (EXTI_PR),
352
Phase locked loop (PLL),
24
Pin configuration of HD44780 LCD module,
142t
Port bit set/reset register,
29
Port configuration registers,
28
Port locking register,
29
Preemptive scheduling,
105
and nonpreemptive scheduling difference,
107
Prescaler register (TIMx_PSC),
362
Priority inheritance,
226
Processor performance measurement,
18
Programmable read only memory (PROM),
Program memory,
Programming ARM-based microcontrollers
integrated development environments support
System Workbench for STM32 by AC6,
57
Programming on-board microcontroller,
52
Project
car park management system
55: car park control,
397
Cortex-M4
44-external interrupt based event counter,
354
45-multiple external interrupts,
358
46-generating waveform using timer interrupt,
363
47-external interrupt with timer interrupt,
365
critical sections
42: critical sections-sharing UART,
339
43: suspending scheduler,
345
event groups
25-sending internal and external temperature data to PC,
238
26-controlling flashing of LED,
242
27-GPS based project,
246
examples
31-square wave generation with adjustable frequency,
271
32: frequency sweep waveform generator,
275
33: RGB light controller,
279
34: home alarm system with keyboard,
281
35: ultrasonic car parking with buzzer,
292
36: stepper motor project,
302
37: communicating with Arduino,
315
FreeRTOS
9-displaying task name, number of tasks, and tick count on LCD,
148
10-7-segment 2-digit multiplexed LED display counter,
151
11-7-segment 4-digit multiplexed LED display counter,
159
12-7-segment 4-digit multiplexed LED display event counter,
163
13-traffic lights controller,
167
14-changing LED flashing rate,
176
15-sending data to a PC over USB serial link,
181
16-changing LED flashing rate from PC keyboard,
189
17-displaying task list on PC screen,
192
19-displaying task info on PC screen,
195
20-displaying task state on PC screen,
198
FreeRTOS (API function calls from ISR)
48-using function xTaskResumeFromISR(),
374
49-deferred interrupt processing,
377
50-using function xTaskNotifyFromISR(),
377
51-using function xEventGroupSetBitsFromISR(),
383
52-using functions xTimerStartFromISR() and xTimerChangePeriodFromISR(),
387
53-using functions xSemaphoreTakeFromISR() and xSemaphoreGive(),
391
54-using functions xQueueSendFromISR() and xQueueReceive(),
393
idle task and idle task hook
39: display the free processor time,
324
mobile robot project
57: controlling Buggy lights,
431
58: controlling Buggy motors,
432
59: obstacle avoiding Buggy,
438
60: controlling Buggy remotely,
451
queue management
21-changing LED flashing rate from the PC keyboard,
206
22-using various queue functions,
210
23-ON-OFF temperature controller,
214
semapores
24-sending internal and external temperature data to PC,
228
software timers
29-generate square waveform,
263
task notifications
40: start flashing an LED after receiving notification,
331
41: flashing at different rates after receiving notifications,
335
time in different cities
Pull-up and pull-down resistors,
28
PulNotificationValue,
334
Pulse width modulated (PWM) signals,
428
Push-pull output pin,
28f
Push-pull output port, structure of,
28
Push-pull transistors,
28
Q
Queue management
creating queue, sending and receiving data using,
204
deleting queue, name of queue, resetting queue,
209
project 21-changing LED flashing rate from the PC keyboard,
206
project 22-using various queue functions,
210
project 23-ON-OFF temperature controller,
214
Queue related functions,
391
R
Radio Frequency IDentification (RFID),
397
Random access memory (RAM),
Raspberry Pi single-board computer,
15
RDM6300 RFID reader,
399f
Read only memory (ROM),
Real-time clock (RTC),
10
Real-time operating system, need for,
98
Reduced instruction set computer (RISC),
12,
15
Reset input,
RGB light controller,
279
Rising trigger selection register (EXTI_RTSR),
352
Round-robin scheduling,
104
RS232 communication,
S
Scheduling algorithm
others
dynamic priority scheduling,
108
first come first served,
107
longest remaining time first,
107
multilevel queue scheduling,
108
shortest remaining time first,
107
Schmitt trigger circuits,
357
Semapores
deleting semaphore, getting semaphore count,
227
Project 24: sending internal and external temperature data to PC,
228
Sending data to PC over USB serial link,
181
Sending internal and external temperature data to PC,
228,
238
Serial input-output,
Serial peripheral interface (SPI),
Sfr, memory type specifiers,
69
Shortest remaining time first,
107
Simple resistor capacitor circuits,
357
Simulation, setting break points in MikroC Pro,
83
Software timers
change timer period, get timer period,
258
creating, deleting, starting, stopping, and resetting a timer,
256
project 28-reaction timer,
259
project 29-generate square waveform,
263
project 30-event counter,
266
Sophisticated temperature controller,
4f
Source files path, for FreeRTOS,
114
Square wave generation with adjustable frequency,
271
Start flashing an LED after receiving notification,
331
Statistics, in MikroC Pro,
88
Stepper motor project,
302
ST-LINK V2 programmer,
53f
STM32 development board, connecting LCD to Clicker 2 for,
142
STM32F4DISCOVERY board,
36
STM32F407 interrupts
STM32F407VGT6 microcontroller
clock circuit of
external clock sources,
23
internal clock sources,
24
internal block diagram of,
21
Supervisor Call (SVC),
71
Supply voltage,
Suspending scheduler,
344,
345
System Workbench for STM32 by AC6,
57
T
Task info of FreeRTOS,
195
Task list of FreeRTOS,
189
Task notifications
project 40: start flashing an LED after receiving notification,
331
project 41: flashing at different rates after receiving notifications,
335
xTaskNotify() and xTaskNotifyWait(),
333
xTaskNotifyGive() and uITaskNotifyTake(),
330
xTaskNotifyStateClear() and xTaskNotifyQuery(),
338
Task-related functions,
373
FreeRTOS
project 1-flashing an LED every second,
122
project 2-flashing two LEDs, one every second, other one every 200 ms,
122,
125
project 3-suspending and resuming task,
128
project 4-flashing LEDs and deleting task,
130
project 5-flashing an LED using function vTaskDelayUntil(),
134
project 6-flashing LED and push-button switch at different priorities,
136
project 7-getting/setting task priorities,
137
resuming suspended task,
128
running at fixed intervals,
134
Task scheduling algorithms
co-operative scheduling,
99
other scheduling algorithms,
107
preemptive and nonpreemptive scheduling difference,
107
preemptive scheduling,
105
round-robin scheduling,
104
scheduling algorithm goals,
106
Task state of FreeRTOS,
118,
198
Temperature control system, with Wi-Fi capability,
5f
Tiva EK-TM4C123GXL LaunchPad,
42
Traffic lights controller,
167
TrueStudio, for STM32,
57
U
UlBitsToClearOnEntry,
334
Ultrasonic car parking with buzzer,
292
Universal synchronous-asynchronous receiver-transmitter (USART),
Uploading executable code, in MikroC Pro,
78
V
Variable names of FreeRTOS,
118
Voltage regulator circuit,
Von Neumann architecture,
11
W
Watchdog,
Waveform displayed on screen,
367f
capability, temperature control system with,
5f
X
XEventGroupSetBitsFromISR(),
383
XQueueSendFromISR() and xQueueReceive(),
393
XSemaphoreTakeFromISR() and xSemaphoreGive(),
391
XTaskNotifyFromISR(),
377
XTaskResumeFromISR(),
374
XTimerStartFromISR() and xTimerChangePeriodFromISR(),
387
Y
Yield to another task of equal priority, FreeRTOS,
148