【发布时间】:2019-05-30 13:03:24
【问题描述】:
我想为蜂鸣器打开一个 PWM 引脚。但如果我尝试调用 pwmController.OpenPin(6) 方法,应用程序会崩溃并显示 System.Runtime.InteropServices.SEHException。
我已经仔细检查了ms-iot-samples 等示例来源。但我看不出我的问题是什么。
一个想法是缺少一些权限,但如果我尝试添加例如<iot:Capability Name="lowLevelDevices" />,我将无法再构建应用程序。
来源
private PwmPin buzzerPin;
private PwmController pwmController;
public RainbowHAT()
{
// ... do something else
InitAsync();
}
private async void InitAsync()
{
Logger.Log(this, "Init");
// Setup PWM controller.
if (LightningProvider.IsLightningEnabled)
{
LowLevelDevicesController.DefaultProvider = LightningProvider.GetAggregateProvider();
}
var pwmControllers = await PwmController.GetControllersAsync(LightningPwmProvider.GetPwmProvider());
if (pwmControllers == null || pwmControllers.Count < 2)
{
throw new OperationCanceledException("Operation canceled due missing GPIO controller");
}
pwmController = pwmControllers[1];
pwmController.SetDesiredFrequency(50);
// Setup buzzer
buzzerPin = pwmController.OpenPin(13); <-- CRASH
buzzerPin.SetActiveDutyCyclePercentage(0.05);
buzzerPin.Start();
}
我也尝试了以下tip to reduce the min required Windows version,但这也无济于事。
【问题讨论】:
标签: c# windows-10-iot-core pwm