13. Timer Prescaler Configuration

#include <iostream>
using namespace std;

// Default prescaler = 1
int configureTimer(int frequency, int prescaler = 1) {
    return frequency / prescaler;
}

int main() {
    int frequency, mode;
    cin >> frequency >> mode;

    if (mode == 0) {
        cout << configureTimer(frequency);
    } else {
        int prescaler;
        cin >> prescaler;
        cout << configureTimer(frequency, prescaler);
    }

    return 0;
}

Explanation & Logic Summary:

  • Default arguments allow parameters to use predefined values when omitted.
  • Calling configureTimer(frequency) automatically uses prescaler = 1.
  • Providing a prescaler overrides the default.
  • The effective frequency is calculated using integer division.

Firmware Relevance & Real-World Context:

  • Hardware timers commonly divide a base clock using prescalers.
  • Embedded HAL APIs often use default parameters to simplify common use cases.
  • Default arguments reduce API clutter and avoid redundant overloads.
     

 

 

 

Loading...

Input

1000 0

Expected Output

1000