Contents

Cover

Title page

Copyright

About the author

Preface

Acknowledgments

Chapter 1: Microcomputer systems

Abstract

1.1. Overview

1.2. Microcontroller systems

1.3. Microcontroller features

1.4. Microcontroller architectures

1.5. Summary

Chapter 2: Architecture of ARM microcontrollers

Abstract

2.1. Overview

2.2. ARM microcontrollers

2.3. The STM32F407VGT6 microcontroller

2.4. General purpose inputs and outputs

2.5. Nested vectored interrupt controller (NVIC)

2.6. External interrupt controller (EXTI)

2.7. Timers

2.8. Analog-to-digital converters (ADCs)

2.9. Built-in temperature sensor

2.10. Digital-to-analog converter

2.11. Reset

2.12. Electrical characteristics

2.13. Summary

Chapter 3: ARM Cortex microcontroller development boards

Abstract

3.1. Overview

3.2. LPC1768

3.3. STM32 Nucleo family

3.4. EasyMX Pro V7 For STM32

3.5. STM32F4DISCOVERY board

3.6. mbed application board

3.7. EasyMx Pro V7 for Tiva

3.8. MINI-M4 for STM32

3.9. Clicker 2 for MSP432

3.10. Tiva EK-TM4C123GXL LaunchPad

3.11. Fusion for ARM V8

3.12. Clicker 2 for STM32

3.13. Summary

Chapter 4: Clicker 2 for STM32 development board

Abstract

4.1. Overview

4.2. Clicker 2 for STM32 hardware

4.3. Summary

Chapter 5: Programming the ARM-based microcontrollers

Abstract

5.1. Overview

5.2. IDEs supporting the ARM-based microcontrollers

5.3. Summary

Chapter 6: Programming using the mikroC Pro for ARM

Abstract

6.1. Overview

6.2. MikroC Pro for ARM

6.3. The general purpose input-output library

6.4. Memory type specifiers

6.5. PORT input-output

6.6. Accessing individual bits

6.7. Bit data type

6.8. Interrupts and exceptions

6.9. Creating a new project

6.10. Simulation

6.11. Debugging

6.12. Other mikroC IDE tools

6.13. Summary

Chapter 7: Introduction to multitasking

Abstract

7.1. Overview

7.2. Multitasking kernel advantages

7.3. Need for an RTOS

7.4. Task scheduling algorithms

7.5. Choosing a scheduling algorithm

7.6. Summary

Chapter 8: Introduction to FreeRTOS

Abstract

8.1. Overview

8.2. FreeRTOS distribution

8.3. Installing from MikroElektronika web site

8.4. Developing project files

8.5. FreeRTOS headers files path and source files path

8.6. Compiler case sensitivity

8.7. Compiling the template program

8.8. Summary

Chapter 9: Using the FreeRTOS functions

Abstract

9.1. Overview

9.2. FreeRTOS data types

9.3. FreeRTOS variable names

9.4. FreeRTOS function names

9.5. Common macro definitions

9.6. Task states

9.7. Task-related functions

9.8. Using an LCD

9.9. Task name, number of tasks, and tick count

9.10. Project 9—displaying a task name, number of tasks, and tick count on the LCD

9.11. Yield to another task of equal priority

9.12. Aborting delay

9.13. Project 10—7-segment 2-digit multiplexed LED display counter

9.14. Project 11—7-segment 4-digit multiplexed LED display counter

9.15. Project 12—7-segment 4-digit multiplexed LED display event counter

9.16. Project 13—traffic lights controller

9.17. Project 14—changing LED flashing rate

9.18. Project 15—sending data to a PC over USB serial link

9.19. Project 16—changing LED flashing rate from the PC keyboard

9.20. Task list

9.21. Project 17—displaying the task list on the PC screen

9.22. Task info

9.23. Project 19—displaying the task info on the PC screen

9.24. Task state

9.25. Project 20—displaying the task state on the PC screen

9.26. Task parameters

9.27. Summary

Chapter 10: Queue management

Abstract

10.1. Overview–global variables

10.2. Why queues?

10.3. Creating a queue, sending and receiving data using queues

10.4. Project 21–changing LED flashing rate from the PC keyboard

10.5. Deleting a queue, name of a queue, resetting a queue

10.6. Project 22—using various queue functions

10.7. Some other queue functions

10.8. Project 23—ON-OFF temperature controller

10.9. Summary

Chapter 11: Semapores and mutexes

Abstract

11.1. Overview

11.2. Creating binary semaphore and mutex

11.3. Creating a counting semaphore

11.4. Deleting a semaphore, getting the semaphore count

11.5. Giving and taking the semaphores

11.6. Project 24: sending internal and external temperature data to a PC

11.7. Summary

Chapter 12: Event groups

Abstract

12.1. Overview

12.2. Event flags and event groups

12.3. Creating and deleting an event group

12.4. Setting, clearing, waiting For event group bits, and getting event group bits

12.5. Project 25—sending internal and external temperature data to a PC

12.6. Project 26—controlling the flashing of an LED

12.7. Project 27—GPS based project

12.8. Summary

Chapter 13: Software timers

Abstract

13.1. Overview

13.2. Creating, deleting, starting, stopping, and resetting a timer

13.3. Change timer period, get timer period

13.4. Timer name and ID

13.5. Project 28—reaction timer

13.6. Project 29—generate square waveform

13.7. Project 30—event counter (e.g., frequency counter)

13.8. Summary

Chapter 14: Some example projects

Abstract

14.1. Overview

14.2. Project 31: square wave generation with adjustable frequency

14.3. Project 32: frequency sweep waveform generator

14.4. Project 33: RGB light controller

14.5. Project 34: home alarm system with keyboard

14.6. Project 35: ultrasonic car parking with buzzer

14.7. Project 36: stepper motor project

14.8. Project 37: communicating with the Arduino

14.9. Summary

Chapter 15: The Idle task and the idle task hook

Abstract

15.1. Overview

15.2. The Idle task

15.3. Idle task hook functions

15.4. Project 39: display the free processor time

15.5. Summary

Chapter 16: Task Notifications

Abstract

16.1. Overview

16.2. xTaskNotifyGive() and uITaskNotifyTake()

16.3. Project 40: start flashing an LED after receiving notification

16.4. xTaskNotify() and xTaskNotifyWait()

16.5. Project 41: flashing at different rates after receiving notifications

16.6. xTaskNotifyStateClear() and xTaskNotifyQuery()

16.7. Summary

Chapter 17: Critical sections

Abstract

17.1. Overview

17.2. Project 42: critical sections – Sharing the UART

17.3. Suspending the scheduler

17.4. Project 43: suspending the scheduler

17.5. Summary

Chapter 18: Interrupts in Cortex-M4 based microcontrollers

Abstract

18.1. Overview

18.2. Interrupts in general

18.3. STM32F407 interrupts

18.4. Project 44—External interrupt based event counter

18.5. Project 45—Multiple external interrupts

18.6. Internal interrupts (timer interrupts)

18.7. Project 46—Generating waveform using a timer interrupt

18.8. Project 47—External interrupt with timer interrupt

18.9. Summary

Chapter 19: USING the FreeRTOS API function calls from an ISR

Abstract

19.1. Overview

19.2. The xHigherPriorityTaskWoken parameter

19.3. Deferred interrupt processing

19.4. Task related functions from ISR

19.5. Project 48-Using function xTaskResumeFromISR()

19.6. Project 49-Deferred interrupt processing

19.7. Project 50-Using function xTaskNotifyFromISR()

19.8. Event group related functions from ISR

19.9. Project 51-Using function xEventGroupSetBitsFromISR()

19.10. Timer related functions from ISR

19.11. Project 52-Using functions xTimerStartFromISR() and xTimerChangePeriodFromISR()

19.12. Semaphore related functions from ISR

19.13. Project 53-Using functions xSemaphoreTakeFromISR() and xSemaphoreGive()

19.14. Queue related functions from ISR

19.15. Project 54-Using functions xQueueSendFromISR() and xQueueReceive()

19.16. Summary

Chapter 20: Car park management system

Abstract

20.1. Overview

20.2. Project 55: car park control

Chapter 21: Time in different cities

Abstract

21.1. Overview

21.2. Project 56: time project

Chapter 22: Mobile robot project: the Buggy

Abstract

22.1. Overview

22.2. The Buggy

22.3. Wheel motors

22.4. Lights (LEDs)

22.5. Project 57: controlling the Buggy lights

22.6. Project 58: controlling the Buggy motors

22.7. Project 59: obstacle avoiding Buggy

22.8. Project 60: controlling the Buggy remotely

Appendix A. Number systems

Appendix B. The program description language

Index

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.117.196.217