我已经配置了 2 个通道,EMIOS0_2 和 EMIOS0_15 用于捕获时间周期以测量 PWM 频率。
#Configura
tion using Davinci Configurator:
EMIOS0_channel-2 --> 配置为使用总线计数器 F --> 当使用“Icu_GetDutyCycleValues()”读取值时 --> 当在状态寄存器 S2 中设置溢出位时,API 跳过读取。
EMIOS0_channel-15 --> 配置为使用总线计数器 F --> 当使用“Icu_GetDutyCycleValues()”读取值时 --> API 不会跳过并读取值(因为溢出位对于通道 15 无效)。
#reading values:
// 读取前清除
channel_2.ActiveTime = 0u;
channel_2.PeriodTime = 0u;
Icu_GetDutyCycleValues(..);
// 读取前清除
channel_15.ActiveTime = 0u;
channel_15.PeriodTime = 0u;
Icu_GetDutyCycleValues(..);
# 几个问题:
1) 当通道 2 配置为使用计数器 F 时,为什么在状态寄存器 S2 中设置溢出位?
2) 为什么在 Icu_GetDutyCycleValues(..) 中有一个溢出位检查,当有一些像 Channel-2 这样的通道可能被配置为不使用内部计数器时?