私は256(0-255)の異なる明るさでLEDを制御しようとしています。私のコントローラは80mhzに設定され、rtosで動作します。私はクロックモジュールを5マイクロ秒ごとに中断するように設定しています。 150にLEDが調光されるが、それは本当に右に行われている場合、私はよく分からないマイクロコントローラrtos/biosの制御LEDの明るさ
int counter = 1;
int brightness = 0;
void SetUp(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);
GPIOPinTypeGPIOOutput(PORT_4, PIN_1);
Clock_Params clockParams;
Clock_Handle myClock;
Error_Block eb;
Error_init(&eb);
Clock_Params_init(&clockParams);
clockParams.period = 400; // every 5 microseconds
clockParams.startFlag = TRUE;
myClock = Clock_create(myHandler1, 400, &clockParams, &eb);
if (myClock == NULL) {
System_abort("Clock create failed");
}
}
void myHandler1(){
brightness = 150;
while(1){
counter = (++counter) % 256;
if (counter < brightness){
GPIOPinWrite(PORT_4, PIN_1, PIN_1);
}else{
GPIOPinWrite(PORT_4, PIN_1, 0);
}
}
}
あなたはそれが正しいとは確信していませんか?あなたはそれを試しましたか?無限ループを持つ割り込みハンドラはまったく動作しないでしょう! counterが 'uint8_t'だった場合、'%256'も必要ありません。 – Clifford