用16位高级PWM,P12是PWM2P,属于PWMA
初始化先使用PWMA_PS设置脚位,然后写CCMRx前必须先清零CCxE关闭通道(PWMA_CCER1=0x00),再写PWMA_CCMR1设置模式和输出使能和极性,再写PWMA_ARR设置周期时间(根据PWM输入时钟和需要的频率计算),再写PWMA_ENO使能输出,再打开PWMA_BKR的最高位MOEA主输出使能,最后打开PWMA_CR1的CNEA位使能计数器
占空比使用PWMA_CCR1动态设置
初始化:
- P_SW2|=EAXFR;
-
- P0M1=0x00; P0M0=0x00; //设置IO模式
- P1M1=0x00; P1M0=0x00; //设置IO模式
- P2M1=0x00; P2M0=0x00; //设置IO模式
- P3M1=0x03; P3M0=0x00; //设置IO模式
- P4M1=0x00; P4M0=0x00; //设置IO模式
- P5M1=0x00; P5M0=0x00; //设置IO模式
- P6M1=0x00; P6M0=0x00; //设置IO模式
- P7M1=0x00; P7M0=0x00; //设置IO模式
-
- PWMA_CCER1 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道
- PWMA_CCMR1 = 0x60; //通道模式配置
- PWMA_CCER1 = 0x10; //配置通道输出使能和极性
-
- PWMA_ARRH=(unsigned char)(arr>>8); //设置周期时间
- PWMA_ARRL=(unsigned char)arr;
-
- PWMA_ENO=0x00;
- PWMA_ENO|=0x04; //使能输出
-
- PWMA_BKR=0x80; //使能主输出
- PWMA_CR1|=0x01; //开始计时
复制代码
设置占空比:
- PWMA_CCR1H = (unsigned char)(duty >> 8); //设置占空比时间
- PWMA_CCR1L = (unsigned char)(duty);
复制代码
|