找回密码
 立即注册
查看: 337|回复: 2

PWM设置默认高低电平不生效,PWMChannelCtrl(),芯片采用8A8K64D4

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-02-12 11:31:19
已绑定手机

7

主题

10

回帖

81

积分

注册会员

积分
81
发表于 2024-11-26 11:05:51 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-11-26 12:03 编辑


使用芯片:8A8K64D4
我在初始化P6.3和P1.4引脚的pwm的时候,设置P6.3的默认电平是1,P1.4的默认电平是0,但是烧录程序之后使用示波器测试这个两个引脚的pwm方波是相同的,没有180°改变

#include "PWM.h"

//配置GPIO
void GPIO_pwm_config(void) {
//    P6M0 &= ~0x07; P6M1 &= ~0x07; // 配置 P6.0, P6.1, P6.2 为准双向(输出信息)
    P6M0 |= 0x07; P6M1 |= 0x07; // 配置 P6.0, P6.1, P6.2 为推挽(输出信息)
//    P60 = 0; //WS-T-PWM-OUT
//    P61 = 0; //WS-L-PWM-OUT
//    P62 = 0; //WS-ZZ-PWM-OUT
   
//    P7M0 &= ~0x30; P7M1 &= ~0x30; //设置24V使能GD4-EN(P7.4)和12V使能GD3-EN(P7.5)的使能准双向
    P7M0 |= 0x30; P7M1 &= ~0x30;  //设置成推挽,不知道11/22程序抽什么风,使用准双向不能驱动启用12V的使能
    P75 = 0;
    P74 = 0;
   
    //P6.3 GD2-EN (R30)
    P6M0 |= 0x08; P6M1 &= ~0x08;  //推挽

   
    //P1.4(WS-JC-PWM-EN)
    P1M0 |= 0x10; P1M1 &= ~0x10; //推挽

}


/******************** PWM15配置 ********************/
void PWM15_config(void)
{
    PWM15_InitTypeDef    PWM15_InitStructure;    //PWM结构体
    PWM15_InitStructure.PWM_Enable    = ENABLE;     //PWM使能,  ENABLE, DISABLE
    PWM15_InitStructure.PWM_Period    = 18749;     //PERIOD ≤ 65535(16 位计数器限制)
    PWM15_InitStructure.PWM_Clock_Sel = PWM_CLK_SYS;    //时钟源选择,  PWM_CLK_SYS, PWM_CLK_TM2
    PWM15_InitStructure.PWM_Clock_PS  = 6;          //系统时钟分频参数(PS+1分频),  0~15 8
    PWM15_InitStructure.PWM_CInt      = DISABLE;    //计数器归零中断使能,  ENABLE, DISABLE
    PWM15_InitStructure.PWM_Counter   = ENABLE;    //计数器使能,  ENABLE, DISABLE
    PWM15_Init(&PWM15_InitStructure);
   
    //P6.3(GD2-EN)的PWM配置
    PWM15Duty(PWM15_3,18749 / 2, 18749);        //P6.3占空比,50% 1Hz
    //PWM通道控制寄存器设置(P6.3是通道3)
    PWMChannelCtrl(PWM15_3,ENABLE,PWM15_SW_P6,1,DISABLE,DISABLE,DISABLE);    //PWM_ID, 输出使能, 输出通道, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断

    // P1.4(WS-JC-PWM-EN)的PWM配置(1Hz)
    PWM15Duty(PWM15_4, 18749 / 2, 18749); // P1.4的占空比,50%  1Hz
    // PWM通道控制寄存器设置(P1.4是通道4)
    PWMChannelCtrl(PWM15_4, ENABLE, PWM15_SW_P1,0, DISABLE, DISABLE, DISABLE);

}

//初始化pwm
void PWM_init(){
    GPIO_pwm_config();
    PWM15_config();
}


我在初始化P6.3和P1.4引脚的pwm

我在初始化P6.3和P1.4引脚的pwm

使用示波器测试P6.3和P1.4引脚方波信息是一样的

使用示波器测试P6.3和P1.4引脚方波信息是一样的
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-11-26 11:32:49 | 显示全部楼层
您好,初始电平仅仅是作用于PWM未输出前的电平,并不能反转相位。
您可以尝试将PWM15Duty内的两个反转点值进行对换。
例如:
  1. PWM15Duty(PWM15_4, 10, 100);//正相
  2. PWM15Duty(PWM15_4, 100, 10);//反相
复制代码


回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-02-12 11:31:19
已绑定手机

7

主题

10

回帖

81

积分

注册会员

积分
81
发表于 2024-11-26 11:58:34 | 显示全部楼层
王*** 发表于 2024-11-26 11:32
您好,初始电平仅仅是作用于PWM未输出前的电平,并不能反转相位。
您可以尝试将PWM15Duty内的两个反转点值 ...

好的,非常感谢
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 06:10 , Processed in 0.110213 second(s), 65 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表