输出频率与定时器重装值不是线性关系。因为要用浮点计算耗时较长,如果不是频繁变换可以用公式计算,否则用指针+数组更合适。# n; O- K \; @1 M" a
#define FOSC 12000000UL//晶振频率 0 |8 B5 N' H6 I#define T_HL 655366 v" h" L( ^+ K }
unsigned int Reset; //重装值 0 s) T3 P. H( P1 ]' o, \unsigned int F_OUT; //输出频率1 d. ]' |9 N3 ^5 d' W
; G6 t. M2 [5 |$ Y( F* U- j F_OUT=20000;//20~30KHz 1 o! R9 k$ J' j* M0 M Reset=T_HL-(1/((float)F_OUT*2)*FOSC);