Пользовательская программа C использует процессор на 200% на моем RPi3 +.Я заметил это, потому что я задавался вопросом о высокой температуре.
Я проверил свой другой Pis с другими собственными написанными C-программами.Почти то же самое: загрузка процессора 100% (Pi3, но без плюса).Когда я убиваю / останавливаю только эту программу, загрузка процессора и температура падают.
В цикле while (1) я проверяю состояние gpio (подключено к кнопке).Если он нажал, я делаю вещи в зависимости от продолжительности нажатия кнопки.Для печати образца поверх чашек или удаления / изменения данных mysql.
Я прочитал кое-что о select (), но не понял контекста или использования.Но я поняла, что замедление цикла со сном не является искусством.
...
while(1)
{
if (digitalRead(butPin)) // Button is released if this returns 1
{
digitalWrite(ledPin, LOW); // Regular LED off
}
else
{
//evalute button press
......
}
...
Все работает нормально, и пи обычно быстро реагирует.Но для этой легкой работы пи слишком жарко.Поэтому ему также нужно слишком много энергии.
РЕДАКТИРОВАТЬ:
Первая попытка: добавьте usleep () в конце while (1)
thisуменьшить загрузку процессора, но не до низкого уровня.
usleep(0)
=> 200%
usleep(5)
=> 111%
usleep(100)
=> 105%
usleep(5000)
=> 100%
(на Raspberry 3+)
Top RPI3 + CPU 200%