本帖最后由 Iceorigin 于 2023-9-5 16:42 编辑
在源文件kf32f_basic_atim.c中ECCP_PWM_Configuration 存在问题在源文件第2244行代码
/*------------------ 设置PXATRCTL寄存器 -----------------*/
/* 根据结构体成员m_Channel和m_OutputMode,设置PxCHyMOD位域 */
tmpreg = eccpInitStruct->m_Channel;
ECCPx->PXATRCTL = SFR_Config (ECCPx->PXATRCTL,
~(ECCP_PXATRCTL_PXCH1MOD << tmpreg),
(uint32_t)eccpInitStruct->m_OutputMode << tmpreg);
由于在头文件宏定义中: ECCP_CHANNEL_1 ~ECCP_CHANNEL_4 为 0x01 ~0x03 因此 tmpreg 获取的变量范围为 0x00 ~ 0x03。
ECCPx->PXATRCTL 有效位域为 <11:8> 所以导致无论eccpInitStruct->m_OutputMode值为 ECCP_OUTPUT_INDEPENDENT 或 ECCP_OUTPUT_COMPLEMENTARY
ECCPx->PXATRCTL 寄存器中的通道都为 ECCP_OUTPUT_INDEPENDENT模式 既:通过此函数设置通道输出配置[独立输出模式]或是[互补输出模式]都为[独立输出模式] 该库在5个月前已经提交Issues至今依旧无修复,因此使用此函数功能时需要注意此BUG问题
|