ECE 362 Lab Verification / Evaluation Form Experiment 5

Size: px
Start display at page:

Download "ECE 362 Lab Verification / Evaluation Form Experiment 5"

Transcription

1 ECE 362 Lab Verification / Evaluation Form Experiment 5 Evaluation: IMPORTANT! You must complete this experiment during your scheduled lab perior. All work for this experiment must be demonstrated and verified by your lab instructor before the end of your scheduled lab period. STEP DESCRIPTION MAX SCORE 4.0 Prelab Questions Turning on an LED A Level-Based Light Button A Simple LED Toggler An Embedded Reaction Timer 10 TOTAL 25 Signature of Evaluator: Student Name: Class #: - Signature: Date: Page 1 of 7

2 Experiment 5: Fundamentals of Embedded C 1.0 Introduction The initial portion of the semester has focused on developing microcontroller firmware in assembly. This is valuable as a learning exercise, and helps students to gain a greater understanding of what takes place under the hood of the microcontroller and compiler. In industry and in practice, however, embedded firmware is written in higher-level languages, such as C or C++. In this experiment, students will learn basics of writing embedded firmware using higher-level languages, and how the various constructs used in the assembly-based labs translate over into C. 2.0 Objectives 1. To understand fundamental programming techniques in C 2. To be able to translate between a piece of firmware written in assembly and one written in C 3.0 Equipment and Software 1. Standard ECE362 Software Toolchain (Installation instructions available in Experiment 0: Getting Started) 2. STM32F0-DISCOVERY development board (For procurement instructions, see Experiment 0: Getting Started) 4.0 Prelab 4.1 Read section 5 of this document for background information 4.2 Describe in logical operators (AND, OR, NOT, etc.) the process of setting individual bits in a register (without affecting other bits). 4.3 Describe in logical operators (AND, OR, NOT, etc.) the process of clearing individual bits in a register (without affecting other bits). 4.4 Describe in logical operators (AND, OR, NOT, etc.) the process of toggling individual bits in a register (without affecting other bits). 4.5 Describe the purpose of the extern keyword in C 5.0 Background 5.1 Unions and Structures One of the most important aspects of firmware is the ability to access the various system registers used by the microcontroller for configuring the array of peripherals which it provides. For example, one might wish to enable the system clock to the GPIOC peripheral, as a step in allowing programmatic Page 2 of 7

3 control of the system LEDs. In assembly language, the code to perform that operation might look something like this:.equ RCC, 0x equ AHBENR, 0x14 gpioconfig: #Activate GPIOC Clock in RCC Configuration ldr r5, =RCC ldr r6, =AHBENR ldr r0, [r5, r6] ldr r1, =0x orrs r0, r0, r1 str r0, [r5, r6] Fig. 1. Register Access (Assembly) Among the great advantages of C in comparison with Assembly are portability and convenience for improved programmer productivity. Having to know the exact memory locations of the various system registers needed to configure peripherals is a considerable roadblock to effective programming, and as the register locations may change from processor to processor, code written for one device may have to be rewritten to support a different device. To address these issues, device manufacturers such as STMicroelectronics provide peripheral libraries and header files which define items such as system registers in pre-made unions and structures for ease of use by the end programmer. With such library files included in one's code, a C code snippet for performing the same access as that of figure 1 might resemble the following: 5.2 Bit Manipulation in C RCC->AHBENR = 0x ; Fig 2. Register Access (C) Often times, instances will arise in which the values of individual bits in a register must be manipulated, without changing the values of the other bits in the register. C provides several bitwise operators for these purposes Setting Individual Bits Consider the scenario in which you wish to set a bit or bits without altering other bits. This can be done through the use of the bitwise OR ( ) operator: /* Set those bits in register which are equal to '1' in the * bitmask */ Register = Register Bitmask; Page 3 of 7

4 5.2.2 Clearing Individual Bits Register = Bitmask; Next, consider the scenario in which you wish to clear a bit or bits without altering other bits. This can be done through the use of the bitwise AND ( & ) operator: /* Clear those bits in the register which are equal to '0' * in the bitmask */ Register = Register & Bitmask; Register &= Bitmask; Performing a bitmask in this way can be counterintuitive. For clarity of code, it is often preferable to set the positions to be cleared with a '1', negating the bitmask, and then using that in the bitwise AND. C provides the bitwise NOT ( ~ ), or negation operator for this purpose: Thus, /* Define a bitmask */ Bitmask = b ; Bitmask2 = ~(Bitmask); /* Bitmask2 == b */ /* Clear those bits in the register which are equal to '1' * in the bitmask */ Register = Register & ~(Bitmask); Register &= ~(Bitmask); Toggling Individual Bits On other occasions, it may be desirable to 'toggle' individual bits (that is to say, clear bits which are read as '1' and set those which are read as '0'). An example of when such a function might be used is in creating a light blinker, where the present state of a bit (such as one corresponding to a digital output state) is not necessarily known. This can be done through use of the bitwise XOR ( ^ ) operator: /* Toggle those bits in the register which are equal to '1' * in the bitmask */ Register = Register ^ Bitmask; Page 4 of 7

5 Register ^= Bitmask; 5.3 Interrupts in C In experiment 4, students created interrupt service routines in assembly. This was done by defining a global label for the ISR which corresponds to its entry within the vector table. Next, students would redefine the weak vector table mapping to the default handler, directing the mapping instead to the ISR which they had created. In C, this process can be made considerably simpler. After initializations, the timer 2 interrupt service routine resembles the following: extern void TIM2_IRQHandler() { //Timer 2 ISR code goes here } Note the use of the extern compiler keyword. This informs the compiler that the function TIM2_IRQHandler is defined outside of the current file (in this case, TIM2_IRQHandler is defined in the device startup assembly file, alongside all of the other interrupt service routine names defined in the vector table). In using interrupts in C for the STM32F0, be sure to utilize the ISR names defined in the startup assembly file vector table. 5.4 Header Guards The assembly firmware written in the course up to this point has been fairly simple, with the majority of the code written in a single, large assembly file. With the advent of C, however, programs will become substantially more complex, and code will be spread across multiple files. C makes this simple and straightforward, through the use of header files and the #include directive. A minor wrinkle arises, however, with issues of inclusion. Suppose we have a simple include file, include.h, which defines a simple C struct, as shown: File include.h : struct foo { int member; }; In C and other high-level languages, it is possible to nest files hierarchically. Thus, imagine the project includes a second header file, include2.h, which references include.h : File include2.h : #include "include.h" Finally, both include files are referenced within the C code of the project: File main.c : #include "include.h" #include "include2.h" Page 5 of 7

6 In this situation, known as double inclusion, the file main.c has indirectly included two copies of the header file include.h, resulting in two identical definitions of the structure type foo. This is a violation of fundamental C principles, and will result in a compiler error. The solution to inclusion issues such as double inclusion is the usage of what are referred to as header guards. Revisiting the file include.h, suppose we define the file conditionally, as follows: File include.h (revised): #ifndef INCLUDE_H #define INCLUDE_H struct foo { int member; }; #endif The compiler directive #ifndef is a conditional directive, read as if not defined. In this case, the compiler looks to see if a given macro (INCLUDE_H, in the above example) has been defined. If not, then all of the code between #ifndef and #endif is included into the compiled C code. The next line immediately below the definition test defines the macro in question. In this way, the first instance of include.h will define the macro in question and include all of the relevant source code. For any future attempts to include the same code within a given C project, however, the definition test will fail (INCLUDE_H is already defined), and the code in question will be skipped. 6.0 Experiment For this experiment, students will be recreating code examples from experiments 3 and 4, using C instead of assembly. Note that when writing C code, use of hardware abstraction layer (HAL) functions is prohibited and code examples using HAL functions will not receive credit for demonstration; students may and are encouraged to use the unions and structures provided in STM header files, as per figure 2 of this document. 6.1 Turning on an LED Recreate in C the assembly code snippet of problem 6.1 of experiment 3. For a reminder, the code Description: Write a piece of code which configures the microcontroller pin corresponding to LD4 (blue LED) on the STM32F0 discovery board as a standard digital output. Once configured, output a logic 1 on this pin, lighting up the blue LED. 6.2 A Level-Based Light Button Recreate in C the assembly code snippet of problem 6.3 of experiment 3. For a reminder, the Page 6 of 7

7 Description: Write a piece of code which configures the microcontroller pins for B1 (blue button) as a standard digital input, and LD3 and LD4 (the blue and green LEDs) as standard digital outputs. Once done, your code segment should activate the blue LED when button B1 is not pressed (green LED should not be lit). When button B1 is pressed, the blue LED should be turned off and the green LED should be turned on. 6.3 A Simple LED Toggler Recreate in C the assembly code snippet of problem 6.3 of experiment 4. For a reminder, the Description: With user LED LD3 initially off, create a program which toggles LD3 upon pressing user pushbutton B1 (push once to turn it on, again to turn it off, and so on). The timer 2 update interrupt should fire every 5ms, and the code should perform proper button debouncing. 6.4 An Embedded Reaction Timer Recreate in C the assembly code snippet of problem 6.4 of experiment 4. For a reminder, the Description: Create a simple reaction timer. The timer is started when the user presses user pushbutton B1. It then counts out 5 seconds. At the end of 5 seconds, the program should light user LED LD4. During the running of the program, the program should track presses of button B1. If the user presses button B1 within half a second of the 5 second goal (4.5s 5.5s), the program should light user LED LD3. Should the user press the button too early or too late, or if 10 seconds has passed, the program should perform 2 subsequent 1-second flashes of user LED LD3, then turn the LED off. Once a victory or loss has occurred, a subsequent press of B1 should reset the reaction timer and allow the user to play again. 7.0 Sources Cited [1] Wikipedia. Include Guard. [Online] Available: Page 7 of 7

ECE 362 Lab Verification / Evaluation Form Experiment 3

ECE 362 Lab Verification / Evaluation Form Experiment 3 ECE 362 Lab Verification / Evaluation Form Experiment 3 Evaluation: IMPORTANT! You must complete this experiment during your scheduled lab perior. All work for this experiment must be demonstrated and

More information

ECE 362 Experiment 4: Interrupts

ECE 362 Experiment 4: Interrupts ECE 362 Experiment 4: Interrupts 1.0 Introduction Microprocessors consistently follow a straight sequence of instructions, and you have likely only worked with this kind of programming until now. In this

More information

ECE 362 Experiment 3: General Purpose I/O

ECE 362 Experiment 3: General Purpose I/O ECE 362 Experiment 3: General Purpose I/O 1.0 Introduction In this experiment, you will learn how to attach simple input devices (pushbuttons) and simple output devices (LEDs) to an STM32 development board.

More information

Embedded C. ECE Rick

Embedded C. ECE Rick Embedded C ECE 362 https://engineering.purdue.edu/ee362/ Rick Reading Assignment Reading assignment: Family Reference Manual, Chapter 17, "General purpose timers (TIM2 and TIM3)", pages 377 443. Textbook,

More information

UNIVERSITY OF CALIFORNIA, SANTA CRUZ BOARD OF STUDIES IN COMPUTER ENGINEERING CMPE13/L: INTRODUCTION TO PROGRAMMING IN C SPRING 2013

UNIVERSITY OF CALIFORNIA, SANTA CRUZ BOARD OF STUDIES IN COMPUTER ENGINEERING CMPE13/L: INTRODUCTION TO PROGRAMMING IN C SPRING 2013 Introduction Reading Concepts UNIVERSITY OF CALIFORNIA, SANTA CRUZ BOARD OF STUDIES IN COMPUTER ENGINEERING CMPE13/L: INTRODUCTION TO PROGRAMMING IN C SPRING 2013 Lab 2 Bouncing LEDs In this lab, you will

More information

ELEC 3040/3050 Lab Manual Lab 2 Revised 8/20/14. LAB 2: Developing and Debugging C Programs in MDK-ARM for the STM32L100RC Microcontroller

ELEC 3040/3050 Lab Manual Lab 2 Revised 8/20/14. LAB 2: Developing and Debugging C Programs in MDK-ARM for the STM32L100RC Microcontroller LAB 2: Developing and Debugging C Programs in MDK-ARM for the STM32L100RC Microcontroller The objective of this laboratory session is to become more familiar with the process for creating, executing and

More information

By the end of Class. Outline. Homework 5. C8051F020 Block Diagram (pg 18) Pseudo-code for Lab 1-2 due as part of prelab

By the end of Class. Outline. Homework 5. C8051F020 Block Diagram (pg 18) Pseudo-code for Lab 1-2 due as part of prelab By the end of Class Pseudo-code for Lab 1-2 due as part of prelab Homework #5 on website due before next class Outline Introduce Lab 1-2 Counting Timers on C8051 Interrupts Laboratory Worksheet #05 Copy

More information

C Language Programming

C Language Programming Experiment 2 C Language Programming During the infancy years of microprocessor based systems, programs were developed using assemblers and fused into the EPROMs. There used to be no mechanism to find what

More information

EL6483: Brief Overview of C Programming Language

EL6483: Brief Overview of C Programming Language EL6483: Brief Overview of C Programming Language EL6483 Spring 2016 EL6483 EL6483: Brief Overview of C Programming Language Spring 2016 1 / 30 Preprocessor macros, Syntax for comments Macro definitions

More information

EECS 373 Midterm Winter 2013

EECS 373 Midterm Winter 2013 EECS 373 Midterm Winter 2013 Name: unique name: Sign the honor code: I have neither given nor received aid on this exam nor observed anyone else doing so. Scores: # Page Points 2 /15 3 /20 4 /12 5 /13

More information

AN4515 Application note

AN4515 Application note Application note Using Batch Acquisition Mode (BAM) to maximize power efficiency on STM32F410/411/412 microcontroller lines Introduction The STM32F410, STM32F411 and STM32F412 lines are part of the STM32

More information

ECE383: Microcomputers Lab 6 Basic and Finite State Machine LED and Switch I/O Programming

ECE383: Microcomputers Lab 6 Basic and Finite State Machine LED and Switch I/O Programming ECE383: Microcomputers Lab 6 Basic and Finite State Machine LED and Switch I/O Programming Goals: The goals of this lab are to continue to instruct students in a PIC24-based hardware system using PIO ports

More information

SOME ASSEMBLY REQUIRED

SOME ASSEMBLY REQUIRED SOME ASSEMBLY REQUIRED Assembly Language Programming with the AVR Microcontroller TIMOTHY S. MARGUSH CRC Press Taylor & Francis Group CRC Press is an imprint of the Taylor & Francis Croup an Informa business

More information

AN4045 Application note

AN4045 Application note Application note STM32F3 series in-application programming (IAP) using the USART Introduction An important requirement for most Flash-memory-based systems is the ability to update the firmware when installed

More information

AN3268 Application note

AN3268 Application note Application note STM32VLDISCOVERY firmware package Introduction The purpose of this application note is to describe the STM32VLDISCOVERY package structure and provide short descriptions of: STM32VLDISCOVERY

More information

XC2287M HOT Getting Started Exercise 1 Get familiar with the tool chain and uses a timer triggered LED toggle

XC2287M HOT Getting Started Exercise 1 Get familiar with the tool chain and uses a timer triggered LED toggle XC2287M HOT Getting Started Exercise 1 Get familiar with the tool chain and uses a timer triggered LED toggle Device: XC2287M-104F80 Compiler: Tasking Viper 2.4r1 Code Generator: DAvE 2.1 Getting Started

More information

Hands-On with STM32 MCU Francesco Conti

Hands-On with STM32 MCU Francesco Conti Hands-On with STM32 MCU Francesco Conti f.conti@unibo.it Calendar (Microcontroller Section) 07.04.2017: Power consumption; Low power States; Buses, Memory, GPIOs 20.04.2017 21.04.2017 Serial Interfaces

More information

Slide Set 5. for ENCM 339 Fall Steve Norman, PhD, PEng. Electrical & Computer Engineering Schulich School of Engineering University of Calgary

Slide Set 5. for ENCM 339 Fall Steve Norman, PhD, PEng. Electrical & Computer Engineering Schulich School of Engineering University of Calgary Slide Set 5 for ENCM 339 Fall 2016 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary October 2016 ENCM 339 Fall 2016 Slide Set 5 slide 2/32

More information

One 32-bit counter that can be free running or generate periodic interrupts

One 32-bit counter that can be free running or generate periodic interrupts PSoC Creator Component Datasheet Multi-Counter Watchdog (MCWDT_PDL) 1.0 Features Configures up to three counters in a multi-counter watchdog (MCWDT) block Two 16-bit counters that can be free running,

More information

Newbie s Guide to AVR Interrupts

Newbie s Guide to AVR Interrupts Newbie s Guide to AVR Interrupts Dean Camera March 15, 2015 ********** Text Dean Camera, 2013. All rights reserved. This document may be freely distributed without payment to the author, provided that

More information

PAC52XX GPIO Peripheral Firmware Design

PAC52XX GPIO Peripheral Firmware Design APPLICATION NOTE PAC52XX GPIO Peripheral Firmware Design TM Marc Sousa Senior Manager, Systems and Firmware www.active-semi.com Copyright 2014 Active-Semi, Inc. TABLE OF CONTENTS APPLICATION NOTE... 1

More information

EECS 461 Winter 2009 Lab 1: Familiarization and Digital I/O

EECS 461 Winter 2009 Lab 1: Familiarization and Digital I/O EECS 461 Winter 2009 Lab 1: 1 Overview The purpose of this lab is to familiarize you with the hardware and software used in EECS 461. For this class we will be using a 32-bit floating-point Freescale MPC5553

More information

E85 Lab 8: Assembly Language

E85 Lab 8: Assembly Language E85 Lab 8: Assembly Language E85 Spring 2016 Due: 4/6/16 Overview: This lab is focused on assembly programming. Assembly language serves as a bridge between the machine code we will need to understand

More information

BASICS OF THE RENESAS SYNERGY TM

BASICS OF THE RENESAS SYNERGY TM BASICS OF THE RENESAS SYNERGY TM PLATFORM Richard Oed 2018.11 02 CHAPTER 9 INCLUDING A REAL-TIME OPERATING SYSTEM CONTENTS 9 INCLUDING A REAL-TIME OPERATING SYSTEM 03 9.1 Threads, Semaphores and Queues

More information

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version:

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version: SISTEMI EMBEDDED The C Pre-processor Fixed-size integer types Bit Manipulation Federico Baronti Last version: 20160302 The C PreProcessor CPP (1) CPP is a program called by the compiler that processes

More information

MICROPROCESSORS A (17.383) Fall Lecture Outline

MICROPROCESSORS A (17.383) Fall Lecture Outline MICROPROCESSORS A (17.383) Fall 2010 Lecture Outline Class # 03 September 21, 2010 Dohn Bowden 1 Today s Lecture Syllabus review Microcontroller Hardware and/or Interface Programming/Software Lab Homework

More information

STM32SnippetsL0. STM32L0xx Snippets firmware package. Features. Description

STM32SnippetsL0. STM32L0xx Snippets firmware package. Features. Description STM32L0xx Snippets firmware package Data brief Features Complete free C source code firmware examples for STM32L0xx microcontrollers Basic examples using direct-access registers as defined in CMSIS Cortex

More information

AN10254 Philips ARM LPC microcontroller family

AN10254 Philips ARM LPC microcontroller family Rev. 02 25 October 2004 Application note Document information Info Content Keywords ARM LPC, Timer 1 Abstract Simple interrupt handling using Timer 1 peripheral on the ARM LPC device is shown in this application

More information

Chapter 11: Interrupt On Change

Chapter 11: Interrupt On Change Chapter 11: Interrupt On Change The last two chapters included examples that used the external interrupt on Port C, pin 1 to determine when a button had been pressed. This approach works very well on most

More information

Capable of adjusting detection timings for start bit and data bit

Capable of adjusting detection timings for start bit and data bit PSoC Creator Component Datasheet Remote Control (PDL_RC) 1.0 Features Up to 2 Channels HDMI-CEC/ High Definition Multimedia Interface Consumer Electronics Control transmitter/receiver SIRCS/Sony Infrared

More information

W7200 User s Guide. for STM32F10x Standard Library. - USART - GPIO - Timer. Version 1.0.0e

W7200 User s Guide. for STM32F10x Standard Library. - USART - GPIO - Timer. Version 1.0.0e W7200 User s Guide for STM32F10x Standard Library - USART - GPIO - Timer Version 1.0.0e 2013 WIZnet Co., Inc. All Rights Reserved. For more information, visit our website at http://www.wiznet.co.kr Table

More information

Experiment 3. Interrupts. Hazem Selmi, Ahmad Khayyat

Experiment 3. Interrupts. Hazem Selmi, Ahmad Khayyat Experiment 3 Interrupts Hazem Selmi, Ahmad Khayyat Version 162, 24 February 2017 Table of Contents 1. Objectives........................................................................................

More information

CSE3215 Embedded Systems Laboratory

CSE3215 Embedded Systems Laboratory CSE3215 Embedded Systems Laboratory Lab3 Reaction Time Measurement Introduction Human reaction time is a parameter of interest in many psychological and physiological studies of the effects of drugs, stress,

More information

L2 - C language for Embedded MCUs

L2 - C language for Embedded MCUs Formation C language for Embedded MCUs: Learning how to program a Microcontroller (especially the Cortex-M based ones) - Programmation: Langages L2 - C language for Embedded MCUs Learning how to program

More information

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version:

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version: SISTEMI EMBEDDED The C Pre-processor Fixed-size integer types Bit Manipulation Federico Baronti Last version: 20170307 The C PreProcessor CPP (1) CPP is a program called by the compiler that processes

More information

Developing Reusable Device Drivers for MCU's

Developing Reusable Device Drivers for MCU's Embedded Systems Conference East 2012 Page 1 of 20 Developing Reusable Device Drivers for MCU's By Jacob Beningo www.beningo.com http://www.linkedin.com/in/jacobbeningo twitter : Jacob_Beningo EDN Blog

More information

INTERRUPTS in microprocessor systems

INTERRUPTS in microprocessor systems INTERRUPTS in microprocessor systems Microcontroller Power Supply clock fx (Central Proccesor Unit) CPU Reset Hardware Interrupts system IRQ Internal address bus Internal data bus Internal control bus

More information

Faculty of Engineering and Information Technology Embedded Software. Lab 3 Interrupts and Timers

Faculty of Engineering and Information Technology Embedded Software. Lab 3 Interrupts and Timers Faculty of Engineering and Information Technology Subject: 48434 Embedded Software Assessment Number: 3 Assessment Title: Lab 3 Interrupts and Timers Tutorial Group: Students Name(s) and Number(s) Student

More information

EECS 373 Fall 2018 Homework #3

EECS 373 Fall 2018 Homework #3 EECS 373 Fall 2018 Homework #3 Answers 1) Loaders, Linkers and Executables a) In straightforward English, explain the role of a linker. [7 points] A linker receives object files as input and must emit

More information

Getting started with MotionPM real-time pedometer library in X-CUBE-MEMS1 expansion for STM32Cube

Getting started with MotionPM real-time pedometer library in X-CUBE-MEMS1 expansion for STM32Cube User manual Getting started with MotionPM real-time pedometer library in X-CUBE-MEMS1 expansion for STM32Cube Introduction The MotionPM is a middleware library part of X-CUBE-MEMS1 software and runs on

More information

,$5$SSOLFDWLRQ1RWH$95 (IILFLHQWSURJUDPPLQJRI$WPHO V $95 PLFURFRQWUROOHUV

,$5$SSOLFDWLRQ1RWH$95 (IILFLHQWSURJUDPPLQJRI$WPHO V $95 PLFURFRQWUROOHUV ,$5$SSOLFDWLRQ1RWH$95 (IILFLHQWSURJUDPPLQJRI$WPHO V $95 PLFURFRQWUROOHUV 6XPPDU\ This application note provides some useful hints on how to program the Atmel AVR microcontrollers using the IAR Compiler.

More information

UM2350. Getting started with MotionPW real-time pedometer for wrist library in X-CUBE-MEMS1 expansion for STM32Cube. User manual.

UM2350. Getting started with MotionPW real-time pedometer for wrist library in X-CUBE-MEMS1 expansion for STM32Cube. User manual. User manual Getting started with MotionPW real-time pedometer for wrist library in X-CUBE-MEMS1 expansion for STM32Cube Introduction The MotionPW middleware library is part of the X-CUBE-MEMS1 software

More information

UM2092 User manual. Basic metrology firmware for the STM32F103RD and the STPM32 devices. Introduction

UM2092 User manual. Basic metrology firmware for the STM32F103RD and the STPM32 devices. Introduction User manual Basic metrology firmware for the STM32F103RD and the STPM32 devices Introduction The following document describes a firmware for the STM32F103RD microcontroller to manage the STPM32 metrology

More information

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version:

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version: SISTEMI EMBEDDED The C Pre-processor Fixed-size integer types Bit Manipulation Federico Baronti Last version: 20180312 The C PreProcessor CPP (1) CPP is a program called by the compiler that processes

More information

AN3281 Application note

AN3281 Application note Application note STM8 8-bit MCUs I 2 C optimized examples Introduction This document describes how to use the following I 2 C optimized examples: Hardware configuration example of a common I 2 C bus Master

More information

UM2045 User manual. Getting started with the X-CUBE-NFC3 near field communication transceiver software expansion for STM32Cube.

UM2045 User manual. Getting started with the X-CUBE-NFC3 near field communication transceiver software expansion for STM32Cube. User manual Getting started with the X-CUBE-NFC3 near field communication transceiver software expansion for STM32Cube Introduction This document describes how to get started with the X-CUBE-NFC3 software

More information

C++ Style Guide. 1.0 General. 2.0 Visual Layout. 3.0 Indentation and Whitespace

C++ Style Guide. 1.0 General. 2.0 Visual Layout. 3.0 Indentation and Whitespace C++ Style Guide 1.0 General The purpose of the style guide is not to restrict your programming, but rather to establish a consistent format for your programs. This will help you debug and maintain your

More information

Final Exam. Date: May 12, 2017

Final Exam. Date: May 12, 2017 Final Exam Date: May 12, 2017 UT EID: Printed Name: Last, First Your signature is your promise that you have not cheated and will not cheat on this exam, nor will you help others to cheat on this exam:

More information

UM2276. Getting started with MotionSD standing vs sitting desk detection library in X-CUBE-MEMS1 expansion for STM32Cube. User manual.

UM2276. Getting started with MotionSD standing vs sitting desk detection library in X-CUBE-MEMS1 expansion for STM32Cube. User manual. User manual Getting started with MotionSD standing vs sitting desk detection library in X-CUBE-MEMS1 expansion for STM32Cube Introduction The MotionSD middleware library is part of the X-CUBE-MEMS1 software

More information

Mechatronics Laboratory Assignment #1 Programming a Digital Signal Processor and the TI OMAPL138 DSP/ARM

Mechatronics Laboratory Assignment #1 Programming a Digital Signal Processor and the TI OMAPL138 DSP/ARM Mechatronics Laboratory Assignment #1 Programming a Digital Signal Processor and the TI OMAPL138 DSP/ARM Recommended Due Date: By your lab time the week of January 29 th Possible Points: If checked off

More information

Interrupt handling. Purpose. Interrupts. Computer Organization

Interrupt handling. Purpose. Interrupts. Computer Organization Namn: Laborationen godkänd: Computer Organization Interrupt handling Purpose The purpose of this lab assignment is to give an introduction to interrupts, i.e. asynchronous events caused by external devices

More information

STM32F1xx motor-control firmware for dspin. Quick guide

STM32F1xx motor-control firmware for dspin. Quick guide STM32F1xx motor-control firmware for dspin Quick guide 2 STM32F1xx firmware for dspin STM32F1xx firmware allows you to control L6470 dspin micro-stepping motor driver via STM32F1 MCU. This firmware supports

More information

AN4464 Application note

AN4464 Application note Application note Porting a Green Hills SW to SPC5Studio Introduction SPC5Studio provides a comprehensive framework to design, build and deploy embedded applications for SPC56 Power Architecture 32-bit

More information

Microcontroller VU

Microcontroller VU 136 182.694 Microcontroller VU Kyrill Winkler SS 2014 Featuring Today: Structured C Programming Weekly Training Objective Already done 3.1.1 C demo program 3.1.3 Floating point operations 3.3.2 Interrupts

More information

Pre-Lab due: at 3 p.m. Post-Lab due: at 5 p.m. Name:... Forename:... Initials:...

Pre-Lab due: at 3 p.m. Post-Lab due: at 5 p.m. Name:... Forename:... Initials:... 151-0593-00 Embedded Control Systems (Fall 2018) Lab 1 Topic: Familiarization and Digital I/O Pre-Lab due: 10. 09. 18 at 3 p.m. Post-Lab due: 11. 09. 18 at 5 p.m. Name:... Forename:... Initials:... marianne.schmid@idsc.mavt.ethz.ch,

More information

ECE251: Thursday September 27

ECE251: Thursday September 27 ECE251: Thursday September 27 Exceptions: Interrupts and Resets Chapter in text and Lab #6. READ ALL this material! This will NOT be on the mid-term exam. Lab Practical Exam #1 Homework # due today at

More information

Base Timer Channel (BT) Features. General Description. When to Use a PDL_BT Component 1.0

Base Timer Channel (BT) Features. General Description. When to Use a PDL_BT Component 1.0 1.0 Features Four operating modes 16-bit PWM Timer 16-bit PPG Timer 16/32-bit Reload Timer 16/32-bit PWC Timer Trigger generation for ADC conversion General The Peripheral Driver Library (PDL) Base Timer

More information

Embedded Systems and Software

Embedded Systems and Software Embedded Systems and Software Potpourri & Notes on Lab 2 Artist's concept of Mars Exploration Rover. Courtesy NASA Lab 2 Notes Slide 1 The AVR Assembler We use the AVRASM2 assembler that comes with AVR

More information

BASICS OF THE RENESAS SYNERGY PLATFORM

BASICS OF THE RENESAS SYNERGY PLATFORM BASICS OF THE RENESAS SYNERGY PLATFORM TM Richard Oed 2017.12 02 CHAPTER 9 INCLUDING A REAL-TIME OPERATING SYSTEM CONTENTS 9 INCLUDING A REAL-TIME OPERATING SYSTEM 03 9.1 Threads, Semaphores and Queues

More information

UM2194. Getting started with MotionAW activity recognition for wrist library in X-CUBE-MEMS1 expansion for STM32Cube. User manual.

UM2194. Getting started with MotionAW activity recognition for wrist library in X-CUBE-MEMS1 expansion for STM32Cube. User manual. User manual Getting started with MotionAW activity recognition for wrist library in X-CUBE-MEMS1 expansion for STM32Cube Introduction The MotionAW is a middleware library part of X-CUBE-MEMS1 software

More information

STM32F3 Hands-On Workshop

STM32F3 Hands-On Workshop STM32F3 Hands-On Workshop Ensure you picked-up Welcome Hands-On 2 USB Flash Drive with STM32F3 Discovery Kit Contents USB Cable STM32F3-Discovery Kit will be provided after software is loaded Keil uvision

More information

Software debouncing of buttons

Software debouncing of buttons Software debouncing of buttons snigelen February 5, 2015 1 Introduction Connecting a button as an input to a micro-controller is a relatively easy task, but there are some problems. The main problem is

More information

Lab #4: GPIOs in Assembly Language Week of 18 February 2019

Lab #4: GPIOs in Assembly Language Week of 18 February 2019 ECE271: Microcomputer Architecture and Applications University of Maine Lab #4: GPIOs in Assembly Language Week of 18 February 2019 Goals 1. Learn Thumb-2 Assembly Language Pre-lab 1. Complete the pre-lab

More information

EE475 Lab #3 Fall Memory Placement and Interrupts

EE475 Lab #3 Fall Memory Placement and Interrupts EE475 Lab #3 Fall 2005 Memory Placement and Interrupts In this lab you will investigate the way in which the CodeWarrior compiler and linker interact to place your compiled code and data in the memory

More information

External memory code execution on STM32F7x0 Value line and STM32H750 Value line MCUs

External memory code execution on STM32F7x0 Value line and STM32H750 Value line MCUs Application note External memory code execution on STM32F7x0 Value line and STM32H750 Value line MCUs Introduction There is an increased demand for applications able to support new and complex features,

More information

EMBEDDED SOFTWARE DEVELOPMENT. George Hadley 2017, Images Property of their Respective Owners

EMBEDDED SOFTWARE DEVELOPMENT. George Hadley 2017, Images Property of their Respective Owners EMBEDDED SOFTWARE DEVELOPMENT George Hadley 2017, Images Property of their Respective Owners OUTLINE Embedded vs. General Purpose Programming Layers of Abstraction (Hardware, Interface, Application) Embedded

More information

Fundamental concept in computation Interrupt execution of a program to handle an event

Fundamental concept in computation Interrupt execution of a program to handle an event Interrupts Fundamental concept in computation Interrupt execution of a program to handle an event Don t have to rely on program relinquishing control Can code program without worrying about others Issues

More information

Using the Digital I/O interface of STMicroelectronics STM32 Microcontrollers

Using the Digital I/O interface of STMicroelectronics STM32 Microcontrollers Using the Digital I/O interface of STMicroelectronics STM32 Microcontrollers ARSLAB - Autonomous and Robotic Systems Laboratory Dipartimento di Matematica e Informatica - Università di Catania, Italy santoro@dmi.unict.it

More information

STM8AF6213 STM8AF6223/26 Errata sheet

STM8AF6213 STM8AF6223/26 Errata sheet STM8F6213 STM8F6223/26 Errata sheet Device limitations for STM8F62xx automotive MCUs featuring up to 8 Kbytes of Flash program memory Silicon identification This errata sheet applies to the STMicroelectronics

More information

UNIVERSITY OF CONNECTICUT. ECE 3411 Microprocessor Application Lab: Fall Lab Test III

UNIVERSITY OF CONNECTICUT. ECE 3411 Microprocessor Application Lab: Fall Lab Test III Department of Electrical and Computing Engineering UNIVERSITY OF CONNECTICUT ECE 3411 Microprocessor Application Lab: Fall 2015 Lab Test III There are 2 longer programming problems in this test. There

More information

ENGR 40M Project 3c: Switch debouncing

ENGR 40M Project 3c: Switch debouncing ENGR 40M Project 3c: Switch debouncing For due dates, see the overview handout 1 Introduction This week, you will build on the previous two labs and program the Arduino to respond to an input from the

More information

UNIVERSITY OF CONNECTICUT. ECE 3411 Microprocessor Application Lab: Fall Quiz IV

UNIVERSITY OF CONNECTICUT. ECE 3411 Microprocessor Application Lab: Fall Quiz IV Department of Electrical and Computing Engineering UNIVERSITY OF CONNECTICUT ECE 3411 Microprocessor Application Lab: Fall 2015 Quiz IV There is 1 questions in this quiz. There are 15 pages in this quiz

More information

Using the TASKING Software Platform for AURIX

Using the TASKING Software Platform for AURIX Using the TASKING Software Platform for AURIX MA160-869 (v1.0) November 13, 2017 Copyright 2017 TASKING BV. All rights reserved. You are permitted to print this document provided that (1) the use of such

More information

AN3980 Application note

AN3980 Application note Application note STM32 firmware library for dspin L6470 1 Introduction This application note describes the implementation of the STM32 firmware library for the dspin stepper motor control product (L6470).

More information

ECE 354 Computer Systems Lab II. Interrupts, Strings, and Busses

ECE 354 Computer Systems Lab II. Interrupts, Strings, and Busses ECE 354 Computer Systems Lab II Interrupts, Strings, and Busses Fun Fact Press release from Microchip: Microchip Technology Inc. announced it provides PICmicro field-programmable microcontrollers and system

More information

ELC4438: Embedded System Design ARM Cortex-M Architecture II

ELC4438: Embedded System Design ARM Cortex-M Architecture II ELC4438: Embedded System Design ARM Cortex-M Architecture II Liang Dong Electrical and Computer Engineering Baylor University Memory system The memory systems in microcontrollers often contain two or more

More information

Laboratory Exercise 7

Laboratory Exercise 7 Laboratory Exercise 7 Using Interrupts with C code The purpose of this exercise is to investigate the use of interrupts for the Nios II processor, using C code. To do this exercise you need to have a good

More information

Micrium OS Kernel Labs

Micrium OS Kernel Labs Micrium OS Kernel Labs 2018.04.16 Micrium OS is a flexible, highly configurable collection of software components that provides a powerful embedded software framework for developers to build their application

More information

ECE 354 Introduction to Lab 2. February 23 rd, 2003

ECE 354 Introduction to Lab 2. February 23 rd, 2003 ECE 354 Introduction to Lab 2 February 23 rd, 2003 Fun Fact Press release from Microchip: Microchip Technology Inc. announced it provides PICmicro field-programmable microcontrollers and system supervisors

More information

Lecture test next week

Lecture test next week Lecture test next week Write a short program in Assembler doing. You will be given the print outs of all the assembler programs from the manual You can bring any notes you want Today: Announcements General

More information

Processor and compiler dependent

Processor and compiler dependent Fundamental concept in computation Interrupt execution of a program to handle an event Don t have to rely on program relinquishing control Can code program without worrying about others Issues What can

More information

Getting started with the STSW-BCNKT01 software package for STEVAL-BCNKT01V1 based on STM32Cube

Getting started with the STSW-BCNKT01 software package for STEVAL-BCNKT01V1 based on STM32Cube User manual Getting started with the STSW-BCNKT01 software package for STEVAL-BCNKT01V1 based on STM32Cube Introduction The STSW-BCNKT01 firmware package for BlueCoin Starter Kit provides sample projects

More information

Project Debugging with MDK-ARM

Project Debugging with MDK-ARM Project Debugging with MDK-ARM Notes: This document assumes MDK-ARM Version 5.xx (µvision5 ) is installed with the required ST-Link USB driver, device family pack (STM32F4xx for STM32F4-Discovery board;

More information

LABORATORIO DI ARCHITETTURE E PROGRAMMAZIONE DEI SISTEMI ELETTRONICI INDUSTRIALI. Laboratory Lesson 2: - General Purpose I/O - SysTick

LABORATORIO DI ARCHITETTURE E PROGRAMMAZIONE DEI SISTEMI ELETTRONICI INDUSTRIALI. Laboratory Lesson 2: - General Purpose I/O - SysTick LABORATORIO DI ARCHITETTURE E PROGRAMMAZIONE DEI SISTEMI ELETTRONICI INDUSTRIALI Laboratory Lesson 2: - General Purpose I/O - SysTick Prof. Luca Benini Prof Davide Rossi

More information

Lab 6 - Bouncing LEDs Commit ID Form:

Lab 6 - Bouncing LEDs Commit ID Form: UNIVERSITY OF CALIFORNIA, SANTA CRUZ BOARD OF STUDIES IN COMPUTER ENGINEERING CMPE-13/L: COMPUTER SYSTEMS AND C PROGRAMMING Lab 6 - Bouncing LEDs Commit ID Form: http://goo.gl/forms/eas2rzcsl7 Introduction

More information

Programming Assignment 1: Pushbutton and Light

Programming Assignment 1: Pushbutton and Light CSE 30 WINTER 2010 Programming Assignment 1: Pushbutton and Light Associated Cypress Board: CY3214 Associated Part Family: CY8C24894 PSoC Designer Version: 5.0 Revised: 10.5.2009 Summary When the push

More information

AN LPC1700 secondary USB bootloader. Document information. LPC1700, Secondary USB Bootloader, ISP, IAP

AN LPC1700 secondary USB bootloader. Document information. LPC1700, Secondary USB Bootloader, ISP, IAP LPC1700 secondary USB bootloader Rev. 01 8 September 2009 Application note Document information Info Keywords Abstract Content LPC1700, Secondary USB Bootloader, ISP, IAP This application note describes

More information

CS 210 Fundamentals of Programming I Spring 2015 Programming Assignment 4

CS 210 Fundamentals of Programming I Spring 2015 Programming Assignment 4 CS 210 Fundamentals of Programming I Spring 2015 Programming Assignment 4 20 points Out: February 18/19, 2015 Due: February 25/26, 2015 Reminder: This is a programming assignment, and work on this assignment

More information

1 Overview. 2 Basic Program Structure. 2.1 Required and Optional Parts of Sketch

1 Overview. 2 Basic Program Structure. 2.1 Required and Optional Parts of Sketch Living with the Lab Winter 2015 What s this void loop thing? Gerald Recktenwald v: February 7, 2015 gerry@me.pdx.edu 1 Overview This document aims to explain two kinds of loops: the loop function that

More information

ECE 206, Fall 2001: Lab 3

ECE 206, Fall 2001: Lab 3 ECE 206, : Lab 3 Data Movement Instructions Learning Objectives This lab will give you practice with a number of LC-2 programming constructs. In particular you will cover the following topics: - Load/store

More information

Real Time Embedded Systems. Lecture 10 January 31, 2012 Interrupts

Real Time Embedded Systems.  Lecture 10 January 31, 2012 Interrupts Interrupts Real Time Embedded Systems www.atomicrhubarb.com/embedded Lecture 10 January 31, 2012 Interrupts Section Topic Where in the books Catsoulis chapter 1 (pg 10-12) Simon chapter4 Zilog UM197 (ZNEO

More information

Software Development Advanced

Software Development Advanced Software Development Advanced This material exempt per Department of Commerce license exception TSU Objectives After completing this module, you will be able to: Examine the IP driver s functionality and

More information

TDDE18 & 726G77. Functions

TDDE18 & 726G77. Functions TDDE18 & 726G77 Functions Labs update No more one time password. We will note who have demonstrated during the lab and register this in webreg. Use the terminal to send in your lab! Dont use Visual studio

More information

EE251: Thursday September 20

EE251: Thursday September 20 EE251: Thursday September 20 Parallel I/O aka General Purpose I/O aka GPIO Common Devices: Switches, LEDs, Keypads Read Lab 4 carefully, and Chapter 14 in text Think about what you would like to review

More information

AGH University of Science and Technology Cracow Department of Electronics

AGH University of Science and Technology Cracow Department of Electronics AGH University of Science and Technology Cracow Department of Electronics Microcontroller Lab Tutorial 1 Microcontrollers programming in C Author: Paweł Russek http://www.fpga.agh.edu.pl/ml ver. 3.10.16

More information

AN4311 Application note

AN4311 Application note Application note Assessing STM32L1 Series current consumption Introduction The STMicroelectronics ARM Cortex -M3 based STM32L1 series uses ST s proprietary ultra-low-leakage process technology with an

More information

Developing and Debugging C Programs in MDK-ARM for the STM32L100RC Microcontroller

Developing and Debugging C Programs in MDK-ARM for the STM32L100RC Microcontroller Developing and Debugging C Programs in MDK-ARM for the STM32L100RC Microcontroller ELCE 3040/3050 Lab Session 2 (write-up on course web page) Important References (on course web page): Tutorial: C programming

More information

Getting started with MotionAR activity recognition library in X-CUBE-MEMS1 expansion for STM32Cube

Getting started with MotionAR activity recognition library in X-CUBE-MEMS1 expansion for STM32Cube User manual Getting started with MotionAR activity recognition library in X-CUBE-MEMS1 expansion for STM32Cube Introduction The MotionAR is a middleware library part of X-CUBE-MEMS1 software and runs on

More information

Unlocking the Potential of Your Microcontroller

Unlocking the Potential of Your Microcontroller Unlocking the Potential of Your Microcontroller Ethan Wu Storming Robots, Branchburg NJ, USA Abstract. Many useful hardware features of advanced microcontrollers are often not utilized to their fullest

More information

Review of the syntax and use of Arduino functions, with special attention to the setup and loop functions.

Review of the syntax and use of Arduino functions, with special attention to the setup and loop functions. Living with the Lab Fall 2011 What s this void loop thing? Gerald Recktenwald v: October 31, 2011 gerry@me.pdx.edu 1 Overview This document aims to explain two kinds of loops: the loop function that is

More information