sniglen, very good point, I wrote without enough thought.
The important point to me is that the user can get much of the important information from the silkscreen on the board, and the functions are easy to use.
PWM output is fine with pinMode(pin_num, PWM), and pwmWrite(pin_num, value).
From my perspective that is very slightly better than analogWrite, which needs a bit of explanation about why it isn't the same as 'proper' digital to analogue conversion on an Arduino.
So I agree with sniglen, the majority of the remaining timer functionality corresponds to the timer's and not the channels.
There seems little point having an array of timers, e.g. Timer[1]. setCount(...) because some STM32F timers have different functionality, which may show up in different class interfaces.
So, some of my issues would be fixed by adding to the silk screen the mapping from PWM pin to Timer. I don't mind how (very much), it could be an extra annotation next to each PWM pin, e.g. PWM(T1) or PWM(Timer1, ... or in a table.
In the code, it might be useful to have a function, which returns the Hardware Timer which corresponds to a pin number, e.g.:
HardwareTimer& getHardwareTimer(pin_num);
or
HardwareTimer* getHardwareTimer(pin_num);
So I could write code like:
pinMode(LED1, PWM);
getHardwareTimer(LED1)->setOverflow(BLINKRATE);
pwmWrite(LED1, BLINKRATE/4);
Not perfect, but it gets the idea across
I could even check in my code if pins might share a timer, and hence 'be in conflict':
if (getHardwareTimer(LED1) == getHardwareTimer(SERVO1)) { ... }
I'd be happy to have macros at compile time too, but I'd like the run time function, so that I can do dynamic stuff similar to my first LED1 example.
There is still some channel related functionality, such as getting the captured value when using a pin as an input capture channel. IMHO, these should be done by pin, though they could also be done by Timer1/TImer2/ etc. methods too.
Summary.
I humbly withdraw my support for the change.
Propose a small annotation on the silkscreen, to give pin_number to Timer documentation on the Maple itself.
'Nice to have' a function to map to the right timer from a pin.
Channel related functionality, like input-capture to be at least pin_number based, could be timer based too.
PS - why are the timers so huge?