CSSE3010 2025 -无代写
时间:2025-04-30
CSSE3010 2025 Project
CSSE3010 Project
Remote Control Microscope
(30% – 60 Marks)
Git and BlackBoard: Monday, 12pm in week 13, 2024
Final Demo: Your session in week 13, 2024
Last Updated: April 29, 2025
ECP Hurdle: Not required to be submitted.
(Closed Shoes MUST BE Worn in the labs)
1 Learning Aims
• Apply your knowledge and skills developed in Stages 1–4 into a new combined design.
• Establish a radio communication link using the NRF24l01plus module.
• Control a physical system.
• Use FreeRTOS to implement your system.
2 Resources
• Nucleo-F429ZI platform
• nrf24l01+ Radio Module
• MFS Board
• RGB LED
• Logic Analyzer (AD2)
3 Academic Integrity
All assessments are individual. You should feel free to discuss aspects of C programming and
assessment specifications with fellow students and discuss the related APIs in general terms.
You should not actively help (or seek help from) other students with the actual coding of your
assessment. It is cheating to look at another student’s code, and it is cheating to allow your
code to be seen or shared in printed or electronic form. You should note that all submitted
code will be subject to automated checks for plagiarism and collusion. If we detect plagiarism
or collusion (outside of the base code given to everyone), formal misconduct proceedings will be
initiated against you. If you’re having trouble, seek help from a teaching staff member. Do not
be tempted to copy another student’s code. You should read and understand the statements
on student misconduct in the course profile and on the school website: https://eecs.uq.edu.
au/current-students/guidelines-and-policies-students/student-conduct
Do not post your code to a public place such as the course discussion forum or a public code
repository. (Code in private posts to the discussion forum is permitted.) You must assume that
Page 1 of 15
CSSE3010 2025 Project
some students in the course may have very long extensions so do not post your code to any
public repository. You must follow the following code usage and referencing rules for all code
committed to your git repository (not just the version that you submit), in Tables 1 and 2.
Table 1: Code Origin and Uses/References
Code Origin Usage/Referencing
Code provided by teaching staff this semester Permitted
Code provided to you by CSSE3010
teaching staff (e.g., code hosted on
www.github.com/uqembededsys/sourcelib, posted
on the discussion forum by teaching staff.
May be used freely without reference. (You
must be able to point to the source if queried
about it – so you may find it easier to reference
the code.)
Code you wrote this semester for this course Permitted
Code you have personally written this semester for
CSSE3010 (e.g. mylib).
It may be used freely without reference, Pro-
vided you have not shared or published it.
Unpublished code you wrote earlier Conditons apply; requires references
Code you have personally written in a previous en-
rolment in this course or in another UQ course or
for other reasons and where that code has not been
shared with any other the person or published in any
way or submitted for assessment.
May be used provided you understand the code
AND the source of the code is referenced in a
comment adjacent to that code (in the required
format – see the style guide). If such code is
used without appropriate referencing then this
will be considered misconduct.
C Code from AI tools Prohibited
Any code that you create using a Generative AI
based tool.
All assessment tasks evaluate students’ abilities,
skills and knowledge without the aid of gen-
erative Artificial Intelligence (AI) or Machine
Translation (MT). Students are advised that
the use of AI technologies to develop responses
(e.g. code generation) is strictly prohibited
and may constitute student misconduct under
the Student Code of Conduct.
Page 2 of 15
CSSE3010 2025 Project
Table 2: Code Origin and Uses/References (Continue)
Code Origin Usage/Referencing
Code copied from sources not mentioned previously Prohibited
• Code, in any programming language:
• copied from any website or forum (including
Stack-Overflow and CSDN);
• copied from any public or private repositories;
• copied from textbooks, publications, videos,
apps;
• copied from code provided by teaching staff
only in a previous offering of this course (e.g.
previous assignment one solution);
• written by or partially written by someone else
or written with the assistance of someone else
(other than a teaching staff member);
• written by an AI tool that you did not person-
ally and solely interact with;
• written by you and available to other students;
or
• from any other source besides those mentioned
in earlier table rows above.
May not be used. If the source of the code
is referenced adjacent to the code then this
will be considered code without academic merit
(not misconduct) and will be removed from
your assignment prior to marking (which may
cause compilation to fail and zero marks to be
awarded). Copied code without adjacent refer-
encing will be considered misconduct and action
will be taken. This prohibition includes code
written in other programming languages that
has been converted to C.
Code that you have learned from Conditions Apply, references required
Examples, websites, discussions, videos, code (in any
programming language), etc. that you have learned
from or that you have taken inspiration from or
based any part of your code on but have not copied
or just converted from another programming lan-
guage. This includes learning about the existence
of and behaviour of library functions. This does not
include library functions that have been explicitly
prohibited.
May be used provided you do not directly copy
code AND you understand the code AND the
source of the code or inspiration or learning is
referenced in a comment adjacent to that code
(in the required format – see the style guide).
If such code is used without appropriate refer-
encing then this will be considered misconduct.
Page 3 of 15
CSSE3010 2025 Project
Contents
1 Learning Aims 1
2 Resources 1
3 Academic Integrity 1
4 Introduction 5
5 Project Overview 5
6 Design Tasks – 40 marks 6
6.1 Design Task 1: RCM System – 10 marks . . . . . . . . . . . . . . . . . . . . . . 6
System Status Indicators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Mylib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6.2 Design Task 2: RCM Radio Transmitter – 5 marks . . . . . . . . . . . . . . . . 6
Mylib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6.3 Design Task 3: RCM Radio Packet – 10 marks . . . . . . . . . . . . . . . . . . . 7
Protocol Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Hamming Packet Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
JOIN Packet Transmit with onBoard Pushbutton . . . . . . . . . . . . . . . . . 7
6.4 Design Task 4: RCM Command Input – 10 marks . . . . . . . . . . . . . . . . . 7
MyLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.5 Design Task 5: RCM Output – 5 marks . . . . . . . . . . . . . . . . . . . . . . . 10
MyLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7 Challenge Tasks: Should only be attempted if DT1 to 5 have been completed
– 10 marks 11
7.1 RCM Extra Commands – 5 marks . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Mylib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.2 RCM Display with Oscilloscope – 5 Marks . . . . . . . . . . . . . . . . . . . . . 11
7.3 Advanced System Monitor – 5 Marks . . . . . . . . . . . . . . . . . . . . . . . . 12
7.4 Efficient System – 5 Marks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.5 IR Remote Control – 5 marks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.6 Command line Interface (CLI) – 5 Marks . . . . . . . . . . . . . . . . . . . . . . 12
7.7 Direct Memory Access (DMA) – 5 Marks . . . . . . . . . . . . . . . . . . . . . . 12
8 Coding Practices – 10 marks 13
8.1 Code Quality – 2 marks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8.2 Folders Code Structure – 8 marks . . . . . . . . . . . . . . . . . . . . . . . . . . 13
main.c Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Interrupt Service Routine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9 Demonstration & Marking 14
9.1 Deductions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
10 Edge Conditions and Assumptions 15
Page 4 of 15
CSSE3010 2025 Project
4 Introduction
This project will build on your knowledge from stages 1-4. You will be working individually
on all tasks. The project is designed to have you demonstrate your knowledge of the practical
content and ability to integrate new functionality for the Remote Controlled Microscope (RCM).
The RCM is a microscope that can view targets with great magnification. The RCM is a
computer numerical controller machine that can move in 3 dimensions. The project has a
microscope that can view, zoom, and rotate a target image. A target is a specimen that is
viewed by the microscope.
5 Project Overview
The Remote Control Microscope (RCM) consists of the following sections:
1. RCM System: Control the RCM with the pushbutton/switchbank inputs and the radio
transmitter.
2. RCM Radio Transmitter: Control the RCM using the radio control link.
3. RCM Output: Display the X, Y, Z, zoom, and rotation parameters of the RCM.
4. RCM Command Input: Process the command input for control of the RCM.
5. Challenge Tasks
Page 5 of 15
CSSE3010 2025 Project
6 Design Tasks – 40 marks
6.1 Design Task 1: RCM System – 10 marks
The RCM system is used to manipulate the RCM’s location and control the zoom and rotation.
The RCM system must process the command inputs and control the radio transmitter and
display output.
System Status Indicators
You must implement the following System Status Indicators (Table 3) with the MFS LEDs.
Note MFS LEDs are diagnostic outputs and should be driven directly. There should be no task
mylib driver functions for MFS LEDs.
Table 3: System Status Indicators
MFS LED Function
MFS D1 LED Toggle when a radio packet is sent
MFS D2 LED Toggle value when any MFS pushbutton is pressed.
LTA1000G LED BAR
(segments 3 to 0)
Display CMD OPCODE
Mylib
The RCM system mylib files (sxxxxxx rcmsys.c, sxxxxxx rcmsys.h) must be placed in the
mylib folder.
6.2 Design Task 2: RCM Radio Transmitter – 5 marks
Implement the RCM radio transmitter using the NRF24l01plus radio module (See datasheet
on BlackBoard). The RCM radio transmitter is used to broadcast packets to the RCM. These
packets are used to control the RCM. The RCM radio transmitter must be implemented as an
FSM. The following are radio transmitter configuration parameters that you must use. These
parameters must be present in a myconfig.h in your mylib folder.
Table 4: Parameters in myconfig.h
Parameter value Description
#define MYRADIOCHAN radio channel
byte
radio channel used for transmitting to a RCM.
See BlackBoard for a RCM’s address to use.
uint myradiotxaddr[] bytes>
Address used for transmitting - e.g.
0x12, 0x34, 0x56, 0x78, 0x90. See Black-
Board for a RCM’s address to use.
Mylib
The radio transmitter mylib files (sxxxxxx txradio.c, sxxxxxx txradio.h, myconfig.h) must
be placed in the mylib folder. The radio mylib file must only control the radio and not do any
RCM operations. A radio TX queue should transmit packets via the radio interface.
Page 6 of 15
CSSE3010 2025 Project
6.3 Design Task 3: RCM Radio Packet – 10 marks
Four RCM control radio packets are used: JOIN, XYZ, ROT, and ZOOM. Each packet uses
the same format shown in Table 5. The Sender Address must be your student ID, where
each digit represents a 4-bit hex digit - e.g. 45678910 becomes address: 0x45678910 or 0x45,
0x67, 0x89, 0x10
Table 5: Packet Format - Little Endian (LSB first)
Type Sender Address Payload String
Index (bytes) 0 1 5
Size (bytes) 1 4 11 bytes (must be zero padded)
The payload string for each packet is shown in Table 6.
An example XYZ packet payload: XYZ10000000
This will move the RCM to the following coordinates: X=100mm, Y=0mm and Z=0mm.
(Assume the origin is in the bottom left corner).
Protocol Operation
The JOIN packet must be sent before any packet can be sent. The JOIN packet allows the
sender to use the RCM. If the JOIN packet is not sent first, then the RCM will reject all packets
from the sender. The JOIN packet ensures that only one user can exclusively use the RCM, at
one time. If another user sends a JOIN packet, then the RCM control is passed to that user.
Hamming Packet Encoding
The packet must be hamming encoded, using the details from the examples/getting started/hamming
example. Each packet half-byte must be hamming encoded. The unencoded packet size must
be 16 bytes. Zero padding (i.e. adding zeros) must be used to ensure that the unencoded packet
size is 16 bytes long. The Hamming encoded packet size must be 32 bytes.
JOIN Packet Transmit with onBoard Pushbutton
The onboard pushbutton must be used to transmit a JOIN packet when pressed. No other
conditions (automatic or on-powerup) should be used to send the JOIN packet.
6.4 Design Task 4: RCM Command Input – 10 marks
The command input provided by the MFS pushbuttons, trimpot and switchbank is used to
move the RCM, an absolute distance and in a particular direction, lower/raise the RCM’s Z
coordinate, zoom in/out and increase/decrease the brightness. Assume all distance measure-
ments are in mm. The switchbank input must be used to move the RCM’s head by the specified
distance. An X/Y/Z value moves the RCM in the right/left (X), forward/backward (Y) direc-
tions, and raise/lower (Z) directions. Note, the RCM will automatically stop if it detects that
it will move out of bounds of the operating area. The origin command should set the RCM’s
Page 7 of 15
CSSE3010 2025 Project
Table 6: RCM Radio Type and Payload Packet Format
Packet
Type
Payload String Description
0x20 JOIN Must be sent before
XYZ Packet
0x22 XYZ<3 digit X><3 digit Y><2 digit Z> Moves RCM head
to X,Y,Z coordi-
nates, in mm. Co-
ordinates are speci-
fied as 3 digits for
X/Y and 2 digits
for Z.
0x26 ZOOM<3 digit zoom factor> Set the zoom of the
RCM image. The
minimum value is
0, and the maxi-
mum value is 200.
NOTE This limit
may vary on each
RCM.
0x27 BRIGHT<3 digit
brightness factor>
Set the brightness
of the RCM im-
age. The minimum
value is -100, and
the maximum value
is 100. The default
brightness level is
0.
Note that all X, Y, and Z coordinates are absolute. All numbers are in decimal format for
the payload string must be represented as ASCII characters.
X, Y and Z coordinates to [0,0,0]. The zoom and brightness commands use a relative value and
should initially start at the default value. Table 7 shows the function of Pushbuttons, Trimpot,
and Switches used.
The command input must be implemented as a state machine. Each state will set a command to
be executed. Commands can be viewed in Table 8. Use the CMD and EXE pushbutton signals
to toggle and execute the commands. An example FSM that only does X/Y/Z movement can
be seen in Figure 1. You should expand this FSM to include all actions. Note: CMD SIGNAL
refers to an appropriate form of FreeRTOS synchronisation that is used (e.g. semaphore, queue,
eventbit, direct task notification, etc).
Page 8 of 15
CSSE3010 2025 Project
Table 7: MFS Pushbutton, Trimpot and SwitchBank assignment
Input Acronym Description
SwitchBank SW15 to SW8 VALUE 8-bit value used in command
MFS S1 CMD Toggle the command
MFS S3 EXE Execute the command
MFS Trimpot clockwise
turn
A complete clockwise turn should in-
crease the value used for either the
Zoom or Brightness commands.
MFS Trimpot anti-
clockwise turn
A complete anti-clockwise turn
should increase the value used for
either the Zoom or Brightness com-
mands.
S_IDLE !CMD_SIGNAL
S_X
CMD_SIGNAL
!CMD_SIGNAL
S_Y
CMD_SIGNAL
!CMD_SIGNAL
S_Z
CMD_SIGNAL
CMD_SIGNAL
!CMD_SIGNAL
Figure 1: Example Command Input Finite State Machine. NOTE: CMD SIGNAL is a form
of FreeRTOS synchronisation that you can decide to use.
MyLib
You must create the RCM command input (e.g. cmdin) mylib driver files, which should use the
switchbank, LTA1000G and MFS mylib driver (from previous stages) with added task func-
Page 9 of 15
CSSE3010 2025 Project
Table 8: CMD Function
Command OpCode Description (Note VALUE is defined in Table 7)
IDLE 0x01 No movement or any manipulation of the RCM
X 0x02 Move RCM to an absolute VALUE X distance
Y 0x03 Move RCM to an absolute VALUE Y distance
Z 0x04 Move RCM to an absolute VALUE Z distance
ZOOM 0x05 Increase or decrease zoom of RCM image by 10%
BRIGHT 0x06 Increase or decrease brightness of RCM image by 10%
new 0x07 see Section 7.
del 0x08 see Section 7.
sys 0x09 see Section 7.
ORG 0x0F Move RCM to origin [0,0,0] and reset Zoom and Bright-
ness to default values.
tionality. Note you can use alternative pins for the switchbank and LTA1000G. Previous pin
assignments used for the switchbank and LTA1000G are optional to use. When any MFS
pushbutton is pressed, the MFS D2 LED must be toggled. Note: the RCM command
input mylib must control/interact with the RCM’s mylib driver and not directly control the
RCM by transmitting radio packets. You must use an appropriate form of FreeRTOS synchro-
nisation or parameter sharing (e.g. semaphore, queue, eventbit, direct task notification, etc).
Zoom Calibration
You will have to consider the calibration of the Zoom value using experimentation.
6.5 Design Task 5: RCM Output – 5 marks
You must output the current position (X or Y or Z), Zoom and Brightness parameters using
the MFS Seven Segment Display whenever any of the CMD X, Y, Z, ZOOM and BRIGHT
commands are executed. The coordinates should be displayed in mm. For example, if the X
CMD is executed, then the X position is displayed on the MFS Seven Segment Display.
LTA1000 LED Bar Output
Display the current command opcode (Table 8) on the LTA1000G LED Bar.
RGB LED Output
The RGB LED is used to indicate if the Zoom or Brightness is increasing or decreasing.
Table 9: RGB LED Indicator
Colour Indicator
Red Increasing Zoom or Brightness
Green Default value for Zoom or Brightness (power up).
Blue Decreasing Zoom or Brightness
Page 10 of 15
CSSE3010 2025 Project
MyLib
Create an RCM output mylib driver. You must control the display output using FreeRTOS ele-
ments (e.g. queues, semaphores, etc). The RCM output mylib file must be placed in the mylib
folder. Previous mylib drivers like the RGB driver should also be used.
7 Challenge Tasks: Should only be attempted if DT1 to
5 have been completed – 10 marks
The challenges are intended to be extensions of design task functionalities. You must make a
reasonable attempt at each design task before attempting a challenge. A reasonable attempt
involves having the related flowcharts/state diagrams/schematics and compilable mylib C code
that implements and demonstrates partial functionality of the design task.
If you have not made any reasonable attempt at each design task, your challenge attempt will
not be assessed, as it is not considered an extension of the design task features. Full function-
ality of each design task is not required to attempt a challenge.
Each challenge is worth 5 marks. Choose a maximum of two challenges to do.
7.1 RCM Extra Commands – 5 marks
Extend the RCM commands (Table 8) to allow the viewing of the task’s memory usage and
status. Add create and delete task commands. You must also show where you have used at
least one of the following: event bits, direct task notifications, co-routines or software timers in
your code.
Table 10: Extra Control Commands
Key Description
new Create a new radio transmitter mylib task
del Delete the radio transmitter mylib task
sys Display the current tasks with task name, task ID,
task state, task priority and current memory stack
usage, in the console.
Mylib
The RCM extended command Mylib Task files (sxxxxxx rcmext.c, sxxxxxx rcmext.h) must
be placed in the mylib folder. A controlling task and Event bits should be used.
7.2 RCM Display with Oscilloscope – 5 Marks
Display the RCM head position and position trace (previous positions) on an oscilloscope. Use
the STM32F429ZI DAC module to control the X and Y inputs to the oscilloscope (in x-y mode).
Page 11 of 15
CSSE3010 2025 Project
Add a CMD command that can clear the display. You will have to use a suitable pin for the
DAC output. You must create a suitable mylib file.
7.3 Advanced System Monitor – 5 Marks
Implement a system monitor using the FreeRTOS Trace feature. You should be able to show
at least 5 of the trace hook features listed on the RTOS define table – www.freertos.org/
rtos-trace-macros.html. You must create a suitable mylib file.
7.4 Efficient System – 5 Marks
Reduce the amount of memory used to improve your system’s efficiency. This should be done
by using co-routines, direct task notifications, queuesets, and other methods listed on the
FreeRTOS website. You must also show that you can ’garbage collect’ by deleting task or
queues or other FreeRTOS elements that are not used. You must demonstrate where you have
used co-routines, direct notifications, queuesets, and other FreeRTOS methods. Your system
should have at least 10 co-routines active.
7.5 IR Remote Control – 5 marks
Use an IR remote control to control the RCM. The remote control keys to select the command
and input the VALUE. The IR remote control and receiver can be provided upon request. A
suitable mylib driver using FreeRTOS elements should be created.
7.6 Command line Interface (CLI) – 5 Marks
Create a command line interface (CLI) that implements each command, using the FreeR-
TOS CLI library. The CLI must not duplicate any functionality implemented in DT1 to 5 (e.g.
directly send radio packet, etc). The CLI must interact with the rest of your RCM system
using FreeRTOS synchronisation or message-passing elements (e.g. semaphores or queues).
It must be demonstrated that DT1 to 5 can still function if the CLI source files are not in-
cluded in the compile/build. You must follow the mylib guidelines, regarding the CLI. See the
examples/os/os cli example
7.7 Direct Memory Access (DMA) – 5 Marks
Use direct memory access (DMA) to access any type of peripheral. Any DMA functionality
should be added to existing or created mylib files.
Page 12 of 15
CSSE3010 2025 Project
8 Coding Practices – 10 marks
8.1 Code Quality – 2 marks
It is imperative that the code you write can be easily understood and modified/expanded by
your peers and colleagues. As such, your code will be reviewed by a tutor. Aspects of high
code quality include (but are not limited to):
• descriptive, readable naming of variables, functions, parameters, constants, macros, types
• constants and defines used instead of numerical values
• modularity and functional decomposition instead of repeated code
• consistent white space (horizontal and vertical)
• conformation with the CSSE3010 Style Guide (on Blackboard)
• debugging and testing code neatly excluded from release compile for submission
• design justifications where appropriate
• documentation for functions
• comments for global variables, constants, macros, etc where appropriate
Note that you are encouraged to have debug/test code and extra functionality where appropri-
ate. #define and build configurations should be used to enable or disable the debug/test code.
Commented out code is not permitted.
8.2 Folders Code Structure – 8 marks
Your project code must be in your git repository repo/pf folder (with makefile and filelist.mk)
and your mylib library files must be in your repo/mylib git repository folder.
You are required to reuse and expand upon your mylib library in this project. You should
include additional files to your library. You must follow the mylib task and register guidelines.
Peripherals used should have corresponding task and register files. Register files are to be used
by the task files.
If you do not use your mylib library in this project, you may be penalised across various project
criteria resulting in a substantial loss of marks.
main.c Functions
Functions that do not relate to the initialisation e.g. moving functions, must not be included
in main.c. Functions called in main.c must only be used to initialise the system, not to control
the system. Design task implementations should be done with tasks, using task mylib files.
FreeRTOS
You must demonstrate in your code, that you have used the features provided by FreeRTOS.
Tasks MUST be used to implement various features of the system.
Interrupt Service Routine
Interrupt Service Routines (ISR) must not be used to directly implement the design tasks. ISRs
should control a task with queues, semaphores, events, direct task notifications, etc.
Page 13 of 15
CSSE3010 2025 Project
9 Demonstration & Marking
Marking will occur in YOUR ALLOCATED SESSION in week 13. Students attending
wrong sessions without an official extension request through the school will be marked as 0
during their allocated session. If you are unsure, talk to the course staff.
NOTE: Version Control – You MUST use version control as part of your develop-
ment process. This means that because the project is a bigger task than the stages,
you should have a NUMBER of commits including the FINAL version which is the
one being assessed. If that is not the case, you will not be assessed.
You must show that you have git commits in weeks 11 and 12, or you will not be
assessed. You must be marked off for git commits in week 12, in your lab session.
Each task is allocated a number of marks. Full marks will be awarded to seamless, well inte-
grated tasks with no errors. Part marks may be awarded for partially working solutions. You
must be able to demonstrate functionality to achieve marks.
9.1 Deductions
There are a set of basic expectations for your demonstration. Where demonstrations are par-
ticularly poor and do not meet these expectations, marks will be deducted. This is to ensure
students who have made the effort to meet the expectations are rewarded, and prevent cumber-
some marking demonstrations. Prepare to have your work demonstrated, as might be done in a
performance review or client demonstration. A course staff member will lead the demonstration
and direct you as needed. They will be marking you during and after the demonstration, so it
is wise to ensure that your work is clearly evident to them.
The following situations will result in the allocated deduction. Deductions can only be deducted
a single time. If you have questions, talk to course staff.
Deduction Reason
8 Not building on the work done in stages e.g. not using mylib structure specified
in stages.
4 Excessively unreadable code (no conformity to mylib or general style guide)
4 Significant disregard or no conformity to the mylib or general style guide
4 Reprogramming the Nucleo at any point throughout the demo
4 Interrupt handling function is long-running.
4 Not being ready to demo when asked, or taking a long time to demo function-
ality when asked.
2 Excessive switching of modes, poor usability, disjoint demonstration
2 Excessive resetting of the Nucleo
2 Commented out code
10 if HAL library functions are directly called in mylib .c/.h files or main.c, other
than code that was specified in the provided examples (e.g. examples/adc)
Page 14 of 15
CSSE3010 2025 Project
10 Edge Conditions and Assumptions
This specification only covers the general operation of the RCM. It does not cover all edge
conditions. You may seek clarification for an edge condition via the forum or in lab sessions.
You can also make an assumption on an undocumented edge condition as long as you note it in
your workbook. If an edge condition has been officially addressed in official announcements on
Blackboard and/or the forum, then you are required to follow it, regardless of prior assumptions
that you have made.
Page 15 of 15

学霸联盟
essay、essay代写