- 打卡等级:偶尔看看III
- 打卡总天数:52
- 最近打卡:2024-12-14 14:52:56
中级会员
- 积分
- 300
|
发表于 2024-1-21 13:10:54
|
显示全部楼层
谢谢梁工解答。
void PWMA_ISR(void) interrupt PWMA_VECTOR
{
u8 sr1, sr2;
sr1 = PWMA_SR1; //为了快速, 中断标志用一个局部变量处理
PWMA_SR1 = 0; //清除中断标志
sr2 = PWMA_SR2; //为了快速, 中断标志用一个局部变量处理
PWMA_SR2 = 0; //清除中断标志
sr1 &= PWMA_ISR_En; //每个通道可以单独允许中断处理
if(sr1 & 0x02) //通道1 编码器中断
{
pulse = ((u16)PWMA_CNTRH << 8) + (u16)PWMA_CNTRL; //读取当前编码器计数值
B_Change = 1; //标志已有捕捉值
}
}
这个例程里,是上升沿和下降沿都会触发B_change = 1 么?如果仅仅是其中一个,那么做判断时候读取pulse的就是+2,如果上升沿和下降沿都会对B_change赋值,那么就会+1.
实际上这个例程每次通过串口打印输出的是+2.
请梁工帮忙解答下,是不是我理解错误了。 |
|