C語言的強制轉換對PWM輸出會產生莫名的影響

2021-07-27 05:38:24 字數 786 閱讀 4060

在stm8s003上,c語言的強制轉換對pwm輸出會產生莫名的影響

unsigned char r;

intvalue;

value = ((255-r)/1.0/255)*reload_value; //reload_value是pwm計數器的最高數值

tim2->ccr2h = (value&0xff00)>>8; //比較值高八位

tim2->ccr2l = value&0xff; //比較值低八位

unsigned char r;

intvalue;

value = (int)((255-r)/1.0/255)*reload_value; //reload_value是pwm計數器的最高數值

tim2->ccr2h = (value&0xff00)>>8; //比較值高八位

tim2->ccr2l = value&0xff; //比較值低八位

通過把unsigned char 強制轉換為int,使得編譯時的警告消失,最初在燈板上測試,功能正常。

後來,程式作了其他的修改,燈板硬體也重新設計,燈珠顏色驅動便變得不正常,在改變r、g、b數值時,pwm得不到想要的佔重比,有時還會出現先恢復到預設顏色,然後才變到目標顏色。

此時應該是pwm工作異常。只需把強制轉換去掉,燈珠驅動恢復正常。

具體原因仍不明。

c語言強制轉換

type 其中,type為型別描述符,如int,float等。為表示式。經強制型別轉換運算子運算後,返回乙個具有type型別的數值,這種強制型別轉換操作並不改變運算元本身,運算後運算元本身未改變,例如 int nvar 0xab65 char cchar char nvar 上述強制型別轉換的結果是...

c語言的強制轉換

type 其中,type為型別描述符,如int,float等。為表示式。經強制型別轉換運算子運算後,返回乙個具有type型別的數值,這種強制型別轉換操作並不改變運算元本身,運算後運算元本身未改變,例如 int nvar 0xab65 char cchar char nvar 上述強制型別轉換的結果是...

C 輸出 輸入 型別強制轉換

輸入字串 string s s console.readline 輸出字串 console.writrline s 輸出分兩種 佔位符輸出 console.writeline s,888 連線符輸出 console.writrline s 888 列如 s number 時 則以上兩句輸出都是 nu...