Bạn không đề cập đến một hệ điều hành, như Milliways tôi sẽ cho rằng bạn có nghĩa là Raspbian hoặc một số GNU / Linux khác. Windows IoT sẽ tách biệt.
Tất cả các thư viện python là trình bao bọc trên thư viện C, điều này không phải là bất thường. Tạo các thư viện từ đầu trong một cái gì đó không phải là C. Có ba:
Chúng đã tồn tại ít nhất một vài năm và được duy trì tích cực (ví dụ: phiên bản cuối cùng của libbcm2835 là 3-4 tháng trước).
Tuy nhiên, bạn không cần bất kỳ thư viện tùy thuộc vào những gì bạn muốn làm. Như đã đề cập ở đó, ngoài giao diện sysfs cho những thứ cơ bản, còn có giao diện cấp độ C người dùng di động cho I2C và SPI sử dụng trình điều khiển hạt nhân. Điều này chỉ cần rời khỏi PWM - để truy cập và sử dụng các kênh phần cứng bạn cần sử dụng một trong ba thư viện đó. Hoặc, như joan đề cập trong một nhận xét về câu hỏi khác đó, nếu bạn đang cố gắng đếm xung rất nhanh (tôi sẽ thử nghiệm một vài phương pháp trong trường hợp đó).
Tôi chưa thử mọi sự kết hợp, nhưng giả sử các thư viện cụ thể của pi được mã hóa hoàn toàn, bạn sẽ có thể trộn và kết hợp chúng với các giao diện di động (ví dụ: sử dụng API I2C thông thường và WiredPi cho PWM) miễn là bạn sử dụng chúng cho chân riêng biệt. Điều này có vẻ là một cách tiếp cận kỳ lạ, nhưng nó có ý nghĩa nếu bạn đang làm việc với mã mô-đun và muốn làm cho các bộ phận riêng lẻ càng di động càng tốt. Ví dụ: nếu bạn muốn viết giao diện cho cảm biến I2C, hãy đặt nó xung quanh API trình điều khiển hạt nhân. Sau đó, nếu bạn muốn sử dụng nó trong một chương trình với PWM, hãy sử dụng một trong ba thư viện cho PWM. Mã được viết bằng pigpio / WiredPi / libbcm2835 sẽ chỉ hoạt động trên Raspberry Pi; mã được viết bằng API trình điều khiển kernel sẽ hoạt động trên mọi hệ thống linux.