在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...