If you use non-mbed for BSP, you can use 16 PWMs without any problem.
ThisTry this.
\Arduino15\packages\Seeeduino\hardware\nrf52\1.1.8\cores\nRF5\HardwarePWM.h and .cpp
//----------------------------------------------------------------------------------------------
//Board Library : Seeed nRF52 Borads 1.1.8
//Board Select : Seeed nRF52 Borads / Seeed XIAO nRF52840 Sense
//----------------------------------------------------------------------------------------------
#include <Arduino.h>
#include <Adafruit_TinyUSB.h>
void setup() {
Serial.begin(115200);
while(!Serial);
delay(2000);
}
void loop() {
for(uint8_t i = 0; i < 255; i++) {
Serial.print("PWM0 usedChannel "); Serial.println(HwPWM0.usedChannelCount());
Serial.print("PWM0 freeChannel "); Serial.println(HwPWM0.freeChannelCount());
Serial.print("PWM1 usedChannel "); Serial.println(HwPWM1.usedChannelCount());
Serial.print("PWM1 freeChannel "); Serial.println(HwPWM1.freeChannelCount());
Serial.print("PWM2 usedChannel "); Serial.println(HwPWM2.usedChannelCount());
Serial.print("PWM2 freeChannel "); Serial.println(HwPWM2.freeChannelCount());
Serial.print("PWM3 usedChannel "); Serial.println(HwPWM3.usedChannelCount());
Serial.print("PWM3 freeChannel "); Serial.println(HwPWM3.freeChannelCount());
Serial.print("PWM Value "); Serial.println(i);
analogWrite(LED_RED, i);
analogWrite(LED_GREEN, i*2);
analogWrite(LED_BLUE, i*3);
analogWrite(D10, i*4);
analogWrite(D9, i);
analogWrite(D8, i*2);
analogWrite(D7, i*3);
analogWrite(D6, i*4);
delay(20);
}
delay(1000);
}