在线时间6 小时
UID2113333
注册时间2015-5-13
NXP金币0
该用户从未签到
注册会员

- 积分
- 96
- 最后登录
- 2018-5-8
|
FTM模块(The FlexTimer module)的主要功能有输入捕捉、输出比较和产生PWM信号来驱动电机和进行能量管理。
本实验主要是通过FTM模块的计数器功能,分别对FTM2模块的0,1,2,3四个通道的FTM2_CnV寄存器设置不同的输出匹配的值,分别为15400(100ms) 、30800(200ms)、46200(300ms)、 61600(400ms)。当计数器上升计数到与对应的FTM2_CnV寄存器的设定值相等时,对应通道上产生一次中断。然后通过中断,对通道的引脚电平进行翻转,计数器重新计数。这样相当于产生了四个不同周期的PWM信号来控制KEA128开发板上的4个LED灯的点亮与熄灭。
芯片引脚与LED电路如下图所示。
设置FTM2_CnV寄存器的值代码如下:
在main.c文件中:
- FTM_Init(); /* Initialize the FTM module */
- FTM_SetPeriod(0, 15400); /* Interrupt every 15400 counts, equal to every 100 ms */
- FTM_SetPeriod(1, 30800); /* Interrupt every 30800 counts, equal to every 200 ms */
- FTM_SetPeriod(2, 46200); /* Interrupt every 46200 counts, equal to every 300 ms */
- FTM_SetPeriod(3, 61600); /* Interrupt every 61600 counts, equal to every 400 ms */
复制代码
在FTM.c文件中:
- void FTM_SetPeriod(UINT8 ch, UINT32 per)
- {
- period[ch] = per;
- FTM2_C0V = FTM_CnV_VAL(period[0]) ;
- FTM2_C1V = FTM_CnV_VAL(period[1]) ;
- FTM2_C2V = FTM_CnV_VAL(period[2]) ;
- FTM2_C3V = FTM_CnV_VAL(period[3]);
- }
复制代码 其中:FTM_CnV_VAL为赋值函数,其设定可以在SKEAZ1284.h文件中查询含义。
引脚电平跳变的代码如下:
在main.c文件中:
- void FTM_Interrupt(UINT8 ch)
- {
- switch(ch)
- {
- case 0:
- LED0_TOGGLE;
- break;
- case 1:
- LED1_TOGGLE;
- break;
- case 2:
- LED2_TOGGLE;
- break;
- case 3:
- LED3_TOGGLE;
- break;
- }
- }
复制代码
在GPIO.h文件中:
- #define OUTPUT_TOGGLE(port,register_num) XOUTPUT_TOGGLE(port,register_num)
- #define XOUTPUT_TOGGLE(port,register_num) GPIO##port##_PTOR|=1<<register_num
复制代码
TRK-KEA128_LABTS2.zip
(343.24 KB, 下载次数: 128)
|
|