Book Description
----------------
For makers looking to use the smallest micro-controllers or to wring the highest performance out of larger ones, the C language is still the best option. This practical book provides a solid grounding in C basics for anyone who tinkers with programming micro-controllers. You'll explore the many ways C enables developers and makers to get big results out of tiny devices.
``
Author Marc Loy shows you how to write clean, maintainable C code from scratch. This language and its cousin, C++, are still widely used to write low-level code for device drivers or operating systems. By understanding C syntax and its quirks, you'll gain an enduring computer language literacy that will help you pick up new languages and styles more easily.
* Learn C fundamentals, such as data types, flow control, and functions
* Explore memory management including how programs work on small devices
* Understand answers provided in online forums such as Reddit or Stack Overflow
* Write efficient, custom C code that's both readable and maintainable
* Analyze the performance of your code and weigh optimizations
* Evaluate third-party libraries for use in your own projects
* Create your own libraries to share with others
==========
About the Author
----------------
Marc Loy caught the programming bug after learning 6808 assembly to program his school's HERO 1 in the 80s. He developed and delivered training classes on Java, Unix internals, and networking at Sun Microsystems back in the day and has continued training a (much) wider audience ever since. He now spends his days consulting and writing on technical and media topics. He has also caught the maker bug and is exploring the fast-growing world of embedded electronics and wearables.
Author(s): Marc Loy
Edition: 1
Publisher: O'Reilly Media, Inc.
Year: 2021
Language: English
Pages: 250
Tags: c17 c cygwin embedded posix microcontrollers
Preface
How to Use This Book
Conventions Used in This Book
Using Code Examples
O’Reilly Online Learning
How to Contact Us
Acknowledgments
1. The ABCs of C
Strengths and Weaknesses
Getting Started
Tools Required
Creating a C “Hello, World”
Compiling Your Code
Running Your Code
Next Steps
2. Storing and Stating
Statements in C
Statement Separators
Statement Flow
Variables and Types
Getting User Input
Strings and Characters
Numbers
Variable Names
Variable Assignments
printf() and scanf()
printf() Formats
Tailored Output
scanf() and Parsing Inputs
Operators and Expressions
Arithmetic Operators
Order of Operations
Type Casting
Next Steps
3. Flow of Control
Boolean Values
Comparison Operators
Logical Operators
Branching
The if Statement
The switch Statement
The Ternary Operator and Conditional Assignment
Loop Statements
The for Statement
The while Statement
The do/while Variation
Nesting
Nested Loops and Tables
Variable Scope
Exercises
Next Steps
4. Bits and (Many) Bytes
Storing Multiple Things with Arrays
Creating and Manipulating Arrays
Review of Strings
Multidimensional Arrays
Accessing Elements in Multidimensional Arrays
Storing Bits
Binary, Octal, Hexadecimal
Octal and Hexadecimal Literals in C
Input and Output of Octal and Hex Values
Bitwise Operators
Mixing Bits and Bytes
Conversion Answers
Next Steps
5. Functions
Familiar Functions
Function Flow
Simple Functions
Sending Information to Functions
Passing Simple Types
Passing Strings to Functions
Multiple Types
Exiting a Function
Returning Information
Using Returned Values
Ignoring Returned Values
Nested Calls and Recursion
Recursive Functions
Variable Scope
Global Variables
The main() Function
Return values and main()
Command-Line Arguments and main()
Next Steps
6. Pointers and References
Addresses in C
The NULL Value and Pointer Errors
Arrays
Local Variables and the Stack
Global Variables and the Heap
Pointer Arithmetic
Array Pointers
Functions and Pointers
Managing Memory with Arrays
Allocating with malloc()
Deallocating with free()
C Structures
Defining Structures
Assigning and Accessing Structure Members
Pointers to Structures
Functions and Structures
Pointer Syntax Recap
Next Steps
7. Libraries
The C Standard Library
stdio.h
stdlib.h
string.h
math.h
time.h
ctype.h
Putting It Together
Filling In Strings
Finding Our Interest
Finding New Libraries
Next Steps
8. Real-World C With Arduino
Arduino IDE (Win, Mac, Linux)
Installing on Windows
Installing on macOS
Installing on Linux
Your First Arduino Project
Selecting Your Board
Hello, LED!
An External LED Upgrade
Arduino Libraries
Managing Libraries
Using Arduino Libraries
Arduino Sketches and C++
C++ Objects and Variables
More Practice with Objects
C++ Considerations
Object Homework
Next Steps
9. Smaller Systems
The Arduino Environment
Special Values
Special Types
“Built-In” Functions
Trying Out the Arduino “Stuff”
Microcontroller I/O
Sensors and Analog Input
The Serial Monitor
Is It Hot in Here?
Segmented Displays
Buttons and Digital Input
Just How Hot Is It?
Memory Management on Arduino
Flash (PROGMEM)
SRAM
EEPROM
Remembering Choices
Interrupts
Interrupt Service Routines
Interrupt-Driven Programming
Exercises
Next Steps
10. Faster Code
The Setup
Floating-Point Versus Integer Math
Floating-Point Math Alternatives
Integer Math Versus No Math
Lookup Tables
The Project So Far
The Power of Powers of 2
Loop Optimizations
Unrolling for Fun and Profit
Recursion Versus Iteration
String Versus char[]
Our Final Offer
Next Steps
11. Custom Libraries
Creating Your Own Library
Preprocessor Directives
Preprocessor Macros
Custom Type Definitions
Our Car Project
Multifile Projects
Code (.ino) Files
Header Files
Importing Custom Libraries
Facilitating Communication
Retrofitting Our Car
Creating a Controller
Creating the Library
Updating the Car Project
Getting It Under Control
Go Driving!
Documentation and Distribution
Next Steps
12. Next Next Steps
Intermediate and Advanced Topics
IoT and Arduino
Arduino Source Code
Other Microcontrollers
Industry C/C++
Back to the Future
A. Hardware and Software
Getting the Code
Getting the Hardware: Adafruit
VS Code
Arduino IDE
Fritzing
GNU Compiler Collection
B. printf() Format Specifier Details
Specifier Syntax
Specifier Types
Specifier Flags
Width and Precision
Common Formats
Index