请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS470MF03107 我使用的芯片是 TMS470MF03107。 在阅读了大量论坛帖子后、PCNT 配置并不是很困难、但我自己仍然没有使用捕获功能。 配置过程如下:
1.使用默认时钟配置;

2、;Pwm0-7、选择 HET[2]作为 PWM 输出、周期10000us、占空比50%、使能、PIN2 μ s

3、PWM 中断、Edge0-7、边缘中断默认;
4. CAP0-7、捕捉使用 HET6并使用默认的 CAP 3;

5、引脚0-7、HET2被配置为输出、而 HET6被配置为输入;


配置生成的代码后、根据论坛中的 TMS570 HR 共享函数修改代码
/* PCNT: Capture Duty 3
* - Instruction = 31
* - Next instruction = 32
* - Conditional next instruction = na
* - Interrupt = na
* - Pin = 6
*/
{
/* Program */
0x00020700U | (1U << 5U) | (6U),
/* Control */
0x00000000U,
/* Data */
0x00000000U,
/* Reserved */
0x00000000U
},
/* PCNT: Capture Period 3
* - Instruction = 32
* - Next instruction = 33
* - Conditional next instruction = na
* - Interrupt = na
* - Pin = 6 + 1
*/
{
/* Program */
/*原代码0x00021700U | (1U << 5U) | ((6U) + 1U),*/
0x00021700U | (3U << 5U) | ((6U) + 0U),
/* Control */
0x00000000U,
/* Data */
0x00000000U,
/* Reserved */
0x00000000U
},7.主要零件代码;
#include "system.h"
#include "het.h"
/* USER CODE BEGIN (0) */
hetSIGNAL_t pluse10;
hetSIGNAL_t pluse_pwm;
/* USER CODE END */
/* USER CODE BEGIN (1) */
/* USER CODE END */
int main(void)
{
/* USER CODE BEGIN (2) */
hetInit();
pwmStart(pwm0);
while (1)
{
pwmSetDuty(pwm0, 30);
pluse_pwm = pwmGetSignal(pwm0);
pluse10 = capGetSignal(cap3);
}
/* USER CODE END */
return 0;
}使用示波器测得的 PWM 波形如下:

9.按如下方式读取变量值;

电路板已将 HET2和 HET6连接在一起,并且 pluse10变量的值始终为0? ? ?

