在线时间613 小时
UID252169
注册时间2010-12-5
NXP金币0
TA的每日心情 | 开心 2019-2-14 16:49 |
---|
签到天数: 296 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4473
- 最后登录
- 2020-4-14
|
本帖最后由 zhjb1 于 2016-7-17 05:56 编辑
实验二 PIT测试
参考源码PIT.c,将#include "fsl_pit.h"加到头文件中;
主程序中添加PIT定义函数:
//PIT Initial
void pitInit(void){
//Structure of initialize PIT
pit_config_t pitConfig;
//pitConfig.enableRunInDebug = false;
PIT_GetDefaultConfig(&pitConfig);
//Init pit module
PIT_Init(PIT,&pitConfig);
//Set timer period for channel 0||1000000U
PIT_SetTimerPeriod(PIT,kPIT_Chnl_0,USEC_TO_COUNT(10000U,PIT_SOURCE_CLOCK));//0.01uS
//Enable timer interrupts for channel 0
PIT_EnableInterrupts(PIT,kPIT_Chnl_0,kPIT_TimerInterruptEnable);
//Enable at the NVIC
EnableIRQ(PIT_IRQ_ID);
//Start channel 0
PRINTF("\r\nStarting channel No.0 ...");
PIT_StartTimer(PIT, kPIT_Chnl_0);
}
添加PIT中断函数,其中的js是主程序计数器,由于中断目前采用0.01秒,因此js值,0.01秒增加1。
//PIT Interupt
void PIT_LED_HANDLER(void){
//Clear interrupt flag.
PIT_ClearStatusFlags(PIT,kPIT_Chnl_0,PIT_TFLG_TIF_MASK);
js++;//Programs Counter
pitIsrFlag=true;//Set Pit INT Flag
}
while(1)
改为:
if(true==pitIsrFlag){
PRINTF("\r\n Channel No.0 interrupt is occured !");
pitIsrFlag=false;
//dispBase();
leds();
dispMes();
}
运行结果如照片:
初步考虑PIT中断周期为0.01秒,测速足够,IR、ADC采样也应该够。具体到实际应用时再更改。PTB22的LED一直亮是因为0.01秒的周期来不及闪了——看不到。
|
-
最下一行的计数0.01秒增加1
|