注册会员
- 积分
- 147
- 威望
- 92
- 贡献
- 23
- 兑换币
- 38
- 注册时间
- 2013-1-17
- 在线时间
- 16 小时
|
初始化FTM的PWM功能
Void FTM_PWM_init(FTMn, CHn, u32 freq, u32 duty)
FTM_PWM_init
这个函数是这么定义的: (但还是看不懂这四个值都是干什么的....)
void FTM_PWM_init(FTMn ftmn, CHn ch, u32 freq, u32 duty)
{
u32 clk_hz = (bus_clk_khz * 1000) >> 1; //bus频率/2 bus_clk_khz = 50000
u16 mod;
u8 sc_ps;
u16 cv;
ASSERT( (ftmn == FTM0) || ( (ftmn == FTM1 || ftmn == FTM2 ) && (ch <= CH1)) ); //检查传递进来的通道是否正确
ASSERT( freq <= (clk_hz >> 1) ); //用断言检测 频率 是否正常 ,频率必须小于时钟二分之一
/* 计算分频因子 */
mod = (clk_hz >> 16 ) / freq ;
for(sc_ps = 0; (mod >> sc_ps) >= 1; sc_ps++);
if(freq < 1000)sc_ps++;
mod = (clk_hz >> sc_ps) / freq; //频率设置因子,clk_hz = 25000000
/*
uart_putchar(UART0,mod>>24);
uart_putchar(UART0,mod>>16);
uart_putchar(UART0,mod>>8);
uart_putchar(UART0,mod>>0); */
cv = (duty * (mod - 0 + 1)) / FTM_PRECISON; //占空比设置因子
顺便问一下, 是不是大家都是直接用的蓝宙给的那些各种电机,舵机,摄像头的初始化程序??
但是他们很多定义的函数看不懂啊。。。
|
|