【提问】HT32F52352引脚PWM波输出问题

#include "PWM.h"




void GPTM0_Configuration(void)
{  
 
  TM_TimeBaseInitTypeDef TM_TimeBaseInitStruct; // 声明结构体
  TM_OutputInitTypeDef TM_OutputInitStruct;
  
  CKCU_PeripClockConfig_TypeDef CKCUClock = {{ 0 }};
  CKCUClock.Bit.GPTM0      = 1;
  CKCUClock.Bit.AFIO       = 1;
  CKCUClock.Bit.PA    = 1;
  CKCU_PeripClockConfig(CKCUClock, ENABLE); // 时钟使能  
  AFIO_GPxConfig(GPIO_PA, AFIO_PIN_4, AFIO_MODE_1 );  // 开启复用功能 AFIO_FUN_PWM 
	AFIO_GPxConfig(GPIO_PA, AFIO_PIN_5, AFIO_MODE_1 );  // 开启复用功能 AFIO_FUN_PWM 
  
  GPIO_DirectionConfig    (HT_GPIOA, GPIO_PIN_4, GPIO_DIR_OUT); // 输入输出方向 @arg GPIO_DIR_IN  @arg GPIO_DIR_OUT
	GPIO_DirectionConfig    (HT_GPIOA, GPIO_PIN_5, GPIO_DIR_OUT); // 输入输出方向 @arg GPIO_DIR_IN  @arg GPIO_DIR_OUT
  TM_OutputStructInit(&TM_OutputInitStruct);    //填写 TM_OutputInit 每个成员的默认值
  
  // 定时器时基以及计数方式初始化
  TM_TimeBaseInitStruct.Prescaler = 200-1; // 预分频系数
  TM_TimeBaseInitStruct.CounterReload = 4800-1; // 计数周期
  TM_TimeBaseInitStruct.RepetitionCounter = 0;
  TM_TimeBaseInitStruct.CounterMode = TM_CNT_MODE_UP; // 计数模式
  TM_TimeBaseInitStruct.PSCReloadTime = TM_PSC_RLD_IMMEDIATE;// 立即重装载  
  TM_TimeBaseInit(HT_GPTM0, &TM_TimeBaseInitStruct);  
	TM_CRRPreloadCmd(HT_GPTM1,ENABLE);
	
	//TM_ClearFlag(HT_GPTM1,TM_FLAG_UEV);
 
  // 通道及输出模式初始化
  TM_OutputInitStruct.Channel = TM_CH_0; //选择通道
  TM_OutputInitStruct.OutputMode = TM_OM_PWM1; //PWM模式
  TM_OutputInitStruct.Control = TM_CHCTL_ENABLE; // GPTM通道使能
	TM_OutputInitStruct.ControlN = TM_CHCTL_DISABLE;
  TM_OutputInitStruct.Polarity = TM_CHP_NONINVERTED; // 通道极性,@arg TM_CHP_INVERTED是低电平或下降沿  @arg TM_CHP_NONINVERTED是上升沿
	
	TM_OutputInitStruct.Channel = TM_CH_1; //选择通道
  TM_OutputInitStruct.OutputMode = TM_OM_PWM1; //PWM模式
  TM_OutputInitStruct.Control = TM_CHCTL_ENABLE; // GPTM通道使能
	TM_OutputInitStruct.ControlN = TM_CHCTL_DISABLE;
  TM_OutputInitStruct.Polarity = TM_CHP_NONINVERTED; // 通道极性,@arg TM_CHP_INVERTED是低电平或下降沿  @arg TM_CHP_NONINVERTED是上升沿
  TM_OutputInit(HT_GPTM0, &TM_OutputInitStruct);
  
  TM_Cmd(HT_GPTM0, ENABLE); //开启GPTM0
}
 






 

 以上为PWM初始化代码。

#include "ht32.h"
#include "ht32_board.h"
#include "ARM/INC/Holtek/HT32F5xxxx/ht32f5xxxx_01.h" // Device header
#include "PWM.h"

int main()
{
	/*这里放各种变量初始化*/

	
	
	
	/*这里放各种函数初始化*/
	void GPTM0_Configuration(void);
	
	
	
	
  /*这里放主体函数*/
	
	while(1){
	
	//TM_SetCaptureCompare0(HT_GPTM0,0); //设置占空比,TM_SetCaptureCompare后的0表示通道0
	TM_SetCaptureCompare1(HT_GPTM0,0);
	

	
	}
	
	
	

}

以上为主函数代码。

出现情况:无论如何修改TM_SetCaptureCompare0函数的值,或者直接注释掉这个函数,PA4都会锲而不舍地输出高电平。反之,无论如何修改TM_SetCaptureCompare1函数的值,PA5都不会输出任何电平。

求大佬帮忙解答。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值