如何测量72MHz以下的外部信号, STC32的144MHz的高速PWM
修改3楼的例程为中断模式 !
主要修改部分:
- HSPWMB_CFG = 0x07; //使能PWMB相关寄存器异步访问功能,并使能异步模式PWM中断
复制代码
使能PWM捕获中断:
- WritePWMB((char)&PWMB_IER, 0x06); //使能CC5,CC6捕获中断
- EA = 1;
复制代码
主循环打印捕获结果:
- if (Cap5Flag)
- {
- Cap5Flag = 0;
- printf("%04x ",PWM5_cnt);
- }
- if (Cap6Flag)
- {
- Cap6Flag = 0;
- printf("%04x\r\n",PWM6_cnt);
- }
复制代码
添加PWM中断函数:
- void PWMB_ISR() interrupt PWMB_VECTOR
- {
- char sta;
-
- sta = ReadPWMB((char)&PWMB_SR1);
- if (sta & 0x02)
- {
- PWM5_cnt = ReadPWMB((char)&PWMB_CCR5H);
- PWM5_cnt = (PWM5_cnt<<8) + ReadPWMB((char)&PWMB_CCR5L);
- Cap5Flag = 1;
- }
- if (sta & 0x04)
- {
- PWM6_cnt = ReadPWMB((char)&PWMB_CCR6H);
- PWM6_cnt = (PWM6_cnt<<8) + ReadPWMB((char)&PWMB_CCR6L);
- Cap6Flag = 1;
- }
- WritePWMB((char)&PWMB_SR1, 0x00); //清除完成标志
- }
复制代码
|