EIE373 Microcontroller Systems and Interface

Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due

Department of Electrical and Electronic Engineering

EIE373 Microcontroller Systems and Interface

Laboratory Exercise 5: ARM Programming

(Deadline: Check the course information)

Objective:

At the end ofthe lab exercise, students will be able to

1.   Create an STM32CubeIDE project using the Hardware Abstraction Layer (HAL) library to program STM32.

2.   Configure general purpose I/O.

3.   Use a simple counting loop for delay.

4.   Use the STM32 system core clock for delay.

5.   Use the on-board user button and LED.

Equipment:

STM32CubeIDE (software)

STM32F103RBT6 (hardware)


Important Notices:

1.   You must read the STM32F103RBT6 pinout diagrams very carefully before you do the laboratory exercises. The PDF file can be downloaded from the course website.

2.   You must read the R0008 Reference Manual very carefully before you do the laboratory exercises. The PDF file can be downloaded from the course website.

3.   You leave your student identity card to our technical officers to borrow one box of the kit. They will return your card to you when you return the box. Note that you need to return the box 5 minutes before the end of the laboratory session.

Introduction:

The   STM32F103RB  medium-density  performance   line   family   incorporates  the  high- performance ARM®Cortex®-M3 32-bit RISC core operating at a 72 MHz frequency, high- speed embedded memories (Flash memory up to 128 Kbytes and SRAM up to 20 Kbytes), and extensive range  of enhanced  I/Os and  peripherals  connected  to  two  APB  buses.  The STM32F103RB offers ADCs, general-purpose 16-bit timers plus one PWM timer, as well as standard and advanced communication interfaces: I2Cs and SPIs, three USARTs, a USB,  and a CAN.

This lab exercise introduces STM32F103RB using STM32CubeIDE and C language.  Students will be familiar with the basic I/Os and operate the on-board components.

Procedure:

Section A: Create an STM32CubeIDE project.

1.    Double-click STM32CubeIDE from the Desktop.


2.    Click on Browse... in STM32CubeIDE Launcher.

3.    Select This PC in the directory selection tree.


4.    Double-click on Available space under the desired drive.

5.    Right-click on Items View and select New > Folder.




6.    Name the folder appropriately (e.g., "New folder") and press Enter.


7.    Click Select Folder to confirm the workspace directory.

8.    Check Use this as the default and do not ask again and click Launch.


9.    Go to File > New > STM32 Project > STM32F103RBT6.

10.  Click Next and provide the Project Name.

11.  Click Finish to create the project.

12.  Click Yes to open the associated perspective.

13.  Navigate to myST > Login.

14.  Complete the authentication process.

15.  Configure project settings and click OK when prompted for code generation.

SYS > Serial Wise

RCC Crystal/Ceramic Resonator HCLK > 72MHz

PA5 GPIO_Output

16.  Save the project by navigating to File > Save or using Ctrl+S.

17. Confirm any prompts to generate code.

18.  Navigate to the source files (e.g., main.c) and make necessary edits.

19.  Type in the following statements in USER CODE BEGIN 3. Build the solution and download the program to the microcontroller. You should see the on-board LED is ON.

20.  Click "Run" in the toolbar to start the project and update the ST-Link (only the First Time).

Section B: Flash the onboard LED (PA5) by using a delay loop.

Flash the onboard LED (PA5) using a delay loop. The duty cycle should be 50%, and the delay should be one to two seconds. You may consider using the following delay loop to generate the delay.

Section C: Flash the onboard LED (PA5) by using Systick.

Repeat Section B, but this time, you should use the standard peripheral function Systick.

Section D: Use the on-board button (PC13) to switch on and off the on-board LED (PA5).

When the button is pressed, the LED is on. When the button is released, the LED is off.

Section E: Use the on-board button (PC13) to change the state of the on-board LED (PA5).

The button has two states: State 0 and  1. When it is in State 0, the LED is off. When  it is in State 1, the LED is on. At the beginning, the button is in State 0. When the button is pressed, and it is in State 0, it goes to State 1. When the button is pressed, and it is in State 1, it goes to State 0.

Section F: Write a C Program to simulate the traffic lights

Write a C program to simulate traffic lights using different pins. You can use any pins, but you must use interrupts to implement the application.

A set of traffic lights for cars (Light 3, 3 LEDs)

A set of traffic lights for cars (Light 2, 3 LEDs)

A set of traffic lights for people (Light 1, 2 LEDs)

Repeat the following:

Light 1 (RED), Light 2 (GREEN), Light 3 (RED), period (around 5s)    Light 1 (RED), Light 2 (YELLOW), Light 3 (RED), period (around 1s) Light 1 (RED), Light 2 (RED), Light 3 (RED), period (around 1s)

Light 1 (RED), Light 2 (RED), Light 3 (RED+YELLOW), period (around 1s) Light 1 (GREEN), Light 2 (RED), Light 3 (GREEN), period (around 5s)

Light 1 (GREEN Blinking), Light 2 (RED), Light 3 (YELLOW), period (around 1s) Light 1 (RED), Light 2 (RED), Light 3 (RED), period (around 1s)

Light 1 (RED), Light 2 (RED+YELLOW), Light 3 (RED), period (around 1s)

Section G: Write a C program to count a switch

Connect a switch to a pin and an LED to another pin. There are two states in the switch: State 0 and 1. When it is in State 0, the LED is off. When it is in State 1, the LED is on. At the beginning, the switch is in State 0. When the switch is pressed three times, and it is in State 0, it goes to State 1. When the switch is pressed three times, and it is in State 1, it goes to State 0. You must use an interrupt to implement the application.

Section H: Use an external hardware interrupt to enable the simulation of the traffic lights.

Connect  a  switch  to  an  external  hardware  interrupt  pin.  Write  a  C  program  so  that  the simulation of the traffic lights in Section A can be started by pressing the switch once. If the switch is pressed again, the simulation will be stopped (i.e., all LEDs will be OFF).

Section I: Write a C program to keep sending and receiving characters

Write a C program to complete the following tasks by using interrupts:

1.   Before you press any keys, the character ‘a’ is printed continuously.

2.   When you press a key (say ‘b’), 10 characters of this key (i.e., ‘b’) are printed out and then stop.

3.   After that, when you press a key other than the first key (i.e., ‘b’), nothing happens.

4.   When you press the key again (i.e., ‘b’),the character ‘a' is printed continuously (resume).

Set the baud rate of the PC terminal (i.e., Tera Term) to 9600.

If your program runs successfully and the setting of Tera Term is correct, you should see the following output:

Demonstrate Section B to I to our student helpers.

Instructions:

1.   You are required to demonstrate your programs to our student helpers.

2.   Zip all programs (including the whole projects) from Section B to I into a single file. Submit it to Blackboard.

3.   Deadline: Check the course information.



发表评论

电子邮件地址不会被公开。 必填项已用*标注