No mencionas un sistema operativo, como Milliways, supongo que te refieres a Raspbian o algún otro GNU / Linux. Windows IoT estaría separado.
Todas las bibliotecas de Python son envoltorios en bibliotecas C, lo cual no es inusual. Crear las bibliotecas desde cero en algo que no sea C sería. Hay tres:
Estos han existido por al menos algunos años y se mantienen activamente (por ejemplo, la última versión de libbcm2835 fue hace 3-4 meses).
Sin embargo, no necesita ninguna biblioteca según lo que quiera hacer. Como se mencionó allí, además de la interfaz sysfs para cosas básicas, existen interfaces portátiles de nivel de usuario y C para I2C y SPI que utilizan controladores de kernel. Esto solo deja a PWM: para acceder y usar los canales de hardware que necesita para usar una de esas tres bibliotecas. O, como Joan menciona en un comentario sobre esa otra pregunta, si está tratando de contar pulsos muy rápidos (experimentaría con algunos métodos en ese caso).
No he probado todas las combinaciones, pero suponiendo que las bibliotecas específicas de pi estén codificadas de manera sensata, debería poder mezclarlas y combinarlas con las interfaces portátiles (p. Ej., Use la API I2C normal y cableado Pi para PWM) siempre que las use para pines separados. Esto puede parecer un enfoque extraño, pero tiene sentido si está trabajando con código modular y desea hacer que las piezas individuales sean lo más portátiles posible. Por ejemplo, si desea escribir una interfaz para un sensor I2C, baselo alrededor de la API del controlador del kernel. Luego, si desea usar eso en un programa con PWM, use una de las tres bibliotecas para PWM. El código escrito con pigpio / cablePi / libbcm2835 solo funcionará en una Raspberry Pi; El código escrito utilizando las API del controlador del núcleo funcionará en cualquier sistema Linux.