S T M 3 2 2 .
0
2022/2023
WHAT IS OUR PLAN FOR THE DAY ?
• INTERRUPTION : USE CASE AND IMPLEMENTATION !
• ASYNC INTERRUPT
• STATE MACHINE : CONCEPT AND IMPLEMENTATION.
• TIMER : MUST KNOW REGISTERS !
• TIMER : SYNC INTERRUPT !
• TIMER : PWM
• TIMER : INPUT CAPTURE !
WHAT IS OUR PLAN FOR THE DAY ?
INTERRUPTION :
INTERRUPTION :
INTERRUPTION :
EXTI : HOW ?
• CONFIGURE A GPIO AND EXTI PIN IN STM32CUBEMX AND GENERATE CODE.
• ADD INTO A PROJECT: A CALLBACK FUNCTION, AND A FUNCTION TO TURN ON AN LED.
• VERIFY IT IS WORKING : YOU CAN TOGGLE AN LED WHEN PRESSING THE PUSHBUTTON.
• The push-button is connected to PC13 so that is our target pin !
OKAY, SOME
PRACTICE ?
FAMA HAJA ESMHA NVIC YARROJLA !
FAMA HAJA ESMHA NVIC YARROJLA !
A CALLBACK FUNCTION ?
• WE CAN CALL IT ALSO AN INTERRUPT SERVICE ROUTINE
• THIS FUNCTION WILL BE EXECUTED IF AN INTERRUPTION FLAG IS RAISED
• IN OUR CASE IT IS A RISING OR FALLING EDGE ON PC13 ! (WE CAN DO BOTH RISING AND FALLING)
IMPLEMENTATION :
ALL NEEDED FUNCTIONS CAN BE FOUND :
TYPEDEF ENUM :
• THERE ARE TWO DIFFERENT THINGS GOING ON THERE: A TYPEDEF AND AN ENUMERATED TYPE (AN
"ENUM").
• A TYPEDEF IS A MECHANISM FOR DECLARING AN ALTERNATIVE NAME FOR A TYPE.
• AN ENUMERATED TYPE IS AN INTEGER TYPE WITH AN ASSOCIATED SET OF SYMBOLIC CONSTANTS
REPRESENTING THE VALID VALUES OF THAT TYPE.
1 LED,
3 STATES :
TIMER :
• A TIMER (SOMETIMES REFERRED TO AS A COUNTER) IS A SPECIAL PIECE OF
HARDWARE INSIDE MANY MICROCONTROLLERS. THEIR FUNCTION IS SIMPLE:
THEY COUNT
• YOU CAN APPLY A VARIETY OF SETTINGS TO MOST TIMERS TO CHANGE THE WAY
THEY FUNCTION. THESE SETTINGS ARE USUALLY APPLIED VIA OTHER SPECIAL
FUNCTION REGISTERS INSIDE THE MICROCONTROLLER
TIMER : MAIN FUNCTIONS :
• RUN PERIODIC TASKS
• OUTPUT COMPARE (OC): TOGGLE A PIN WHEN A TIMER REACHES A CERTAIN
VALUE
• PULSE WIDTH MODULATION (PWM): TOGGLE A PIN WHEN A TIMER REACHES A
CERTAIN VALUE AND ON ROLLOVER.
• INPUT CAPTURE (IC): MEASURE THE NUMBER OF COUNTS OF A TIMER BETWEEN
EVENTS ON A PIN
TIMER : MUST KNOW REGISTERS :
• PRESCALER : ALL TIMERS REQUIRE A CLOCK OF SOME SORT. MOST WILL BE
CONNECTED TO THE MICROCONTROLLER’S AHBP BUS (OTHERS, LIKE REAL TIME
CLOCKS, HAVE THEIR OWN CLOCK SOURCES). A TIMER WILL TICK (INCREMENT
BY ONE) EACH TIME IT RECEIVES A CLOCK PULSE.
• COUNTER : IT HAS THE CURRENT VALUE OF THE TIMER
• ARR : DEFINED THE COUNTING PERIOD
TIMER :
MECHANISM
BEHIND :
SYNC INTERRUPT :
• FIRST WE HAVE TO KNOW WHICH BUS IS CONNECTED TO OUR TIMER : CHECK
BLOCK DIAGRAM.
• SET PRESCALER AND ARR TO GET THE REQUIRED FREQUENCY, (TO BE EXPLAINED
ON THE BOARD)
• START YOUR TIMER AND DEFINE YOUR CALLBACK FUNCTION (SEEK HEADER
FILE TO GET THE NAME)
OKAY, SOME PRACTICE ?
SYNC ARR
INTERRUPT :
SOME CODE :
TIMER : PWM GENERATION
• PULSE WIDTH MODULATION MODE ALLOWS TO GENERATE A SIGNAL WITH A
FREQUENCY DETERMINED BY THE VALUE OF THE ARR REGISTER AND A DUTY
CYCLE DETERMINED BY THE VALUE OF THE CCRX REGISTER.
• TIMX_CNT AND TIMX_CCRX ARE ALWAYS COMPARED TO DETERMINE WHETHER
(TIMX_CCRX ≤ TIMX_CNT) OR (TIMX_CNT ≤ TIMX_CCRX) (DEPENDING ON THE
DIRECTION OF THE COUNTER).
• IN INPUT CAPTURE MODE, THE
CAPTURE/COMPARE REGISTERS
(TIMX_CCRX) ARE USED TO HOLD THE
VALUE OF THE COUNTER AFTER A
TRANSITION DETECTED BY THE
CORRESPONDING ICX SIGNAL.
TIMER : INPUT CAPTURE
INPUT CAPTURE :
• THIS MODE IS OFTEN USED TO MEASURE THE FREQUENCY OF A SIGNAL
• WHEN THE FIRST RISING EDGE OCCURS, THE COUNTER VALUE IS RECORDED.
• ANOTHER COUNTER VALUE IS RECORDED AFTER THE SECOND RISING EDGE
OCCURS.
• NOW THE DIFFERENCE BETWEEN THESE 2 COUNTER VALUES IS CALCULATED.
• THE DIFFERENCE IN THE COUNTER VALUES WILL GIVE US THE FREQUENCY.
THATS ALL FOR NOW